ESP32- 开发笔记- 软件开发 4 - GPIO 口
1 背景介绍
GPIO(General Purpose Input/Output) ——通用输入输出口,就是能由软件自由控制输入(接收外界信号)或输出(发出电平信号)的引脚。
ESP32 最核心的功能之一,能被用来控制、连接、读取各种外设,比如按键、LED、传感器、继电器、屏幕等。
ESP32 有多达 39 个 GPIO 引脚,编号为 GPIO0 ~ GPIO39,不过并不是每一个都可以任意使用。
1.1 基本特性
ESP32 直接接 5V 会烧毁 ESP32,若要连接 5V 系统(如 Arduino),必须加 电阻分压 或 逻辑电平转换器。最大电压不能超过3.6V。
最大输出电流(单 GPIO) ~12 mA(官方建议) 超过可能导致芯片发热或失效。一般建议电流不要超过8mA。
gpio_set_drive_capability() 是 ESP-IDF 提供的函数,用来设置 ESP32 GPIO 的驱动能力(Drive Strength),也就是输出电流能力。
这在以下情况非常有用:
- 控制高速信号(如SPI/I2C)
- 驱动多个器件(比如多个LED)
- 要求更强的上升沿/下降沿速度
esp_err_t gpio_set_drive_capability(gpio_num_t gpio_num, gpio_drive_cap_t strength);
gpio_num GPIO编号(如 GPIO_NUM_2)
strength 驱动能力,类型为 gpio_drive_cap_t
其它常见电气控制函数
1.2 不建议使用GPIO口
1.3 常用设置
1.3 IO Matrix(IOMUX)
ESP32每个引脚都可以通过IO Matrix(IOMUX)将其映射为某种外设功能,比如 UART、PWM、SPI等。这意味着你可以自由地分配功能到引脚,非常灵活!你可以把 I2C 的 SDA/SCL 分别映射到 GPIO21 和 GPIO22,也可以换成 GPIO18 和 GPIO19,只要代码里配置对应即可。
1.4 总结
ESP32 的 GPIO 功能非常强大、灵活。
要注意某些 GPIO 的启动限制或输入输出限制。
使用前建议查 ESP32 的 datasheet 或 IO 使用图。
可以结合中断、PWM、ADC、DAC、外设等,组成丰富的控制/采集系
2 控制函数介绍
用 gpio_config() 一次性配置多个参数,适用于批量初始化
gpio_config_t io_conf = {.pin_bit_mask = 1ULL << GPIO_NUM_2,.mode = GPIO_MODE_OUTPUT,.pull_up_en = GPIO_PULLUP_DISABLE,.pull_down_en = GPIO_PULLDOWN_DISABLE,