ESP32系列:GPIO基本输入输出操作实战 |
您所在的位置:网站首页 › gpio0和gpio1 › ESP32系列:GPIO基本输入输出操作实战 |
一、目的
在前面的章节中我们已经介绍了ESP32的开发环境的搭建过程,从本篇开始我们将从最基本的GPIO控制讲起,介绍ESP32上面相关的外设操作。 二、介绍参考资料 GPIO & RTC GPIO – ESP32 – — ESP-IDF Programming Guide latest documentation (espressif.com)https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/gpio.html esp32具有35个GPIO引脚,分别为GPIO0-GPIO23、GPIO25-GPIO27、GPIO32-GPIO39。 注意:有些GPIO在一些芯片封装上没有,所以使用时一定要查阅一些对应的芯片手册。 每一个引脚可以用作通用IO,也可以作为内部外设的输入输出信号。 GPIO Analog Function RTC GPIO Comments GPIO0 ADC2_CH1 RTC_GPIO11 Strapping pin GPIO1 TXD GPIO2 ADC2_CH2 RTC_GPIO12 Strapping pin GPIO3 RXD GPIO4 ADC2_CH0 RTC_GPIO10 GPIO5 Strapping pin GPIO6 SPI0/1 GPIO7 SPI0/1 GPIO8 SPI0/1 GPIO9 SPI0/1 GPIO10 SPI0/1 GPIO11 SPI0/1 GPIO12 ADC2_CH5 RTC_GPIO15 Strapping pin; JTAG GPIO13 ADC2_CH4 RTC_GPIO14 JTAG GPIO14 ADC2_CH6 RTC_GPIO16 JTAG GPIO15 ADC2_CH3 RTC_GPIO13 Strapping pin; JTAG GPIO16 SPI0/1 GPIO17 SPI0/1 GPIO18 GPIO19 GPIO20 This pin is only available on ESP32-PICO-V3 chip package GPIO21 GPIO22 GPIO23 GPIO25 ADC2_CH8 RTC_GPIO6 GPIO26 ADC2_CH9 RTC_GPIO7 GPIO27 ADC2_CH7 RTC_GPIO17 GPIO32 ADC1_CH4 RTC_GPIO9 GPIO33 ADC1_CH5 RTC_GPIO8 GPIO34 ADC1_CH6 RTC_GPIO4 GPI GPIO35 ADC1_CH7 RTC_GPIO5 GPI GPIO36 ADC1_CH0 RTC_GPIO0 GPI GPIO37 ADC1_CH1 RTC_GPIO1 GPI GPIO38 ADC1_CH2 RTC_GPIO2 GPI GPIO39 ADC1_CH3 RTC_GPIO3 GPI 注意 GPIO0、GPIO2、GPIO5、GPIO12、GPIO15作为strapping引脚,也就是说芯片上电时会检查这些引脚的电压,具体细节可以查看芯片手册进行了解。 SPI0/1会使用GPIO6-11、GPIO16-17,模组内部会使用这些引脚作为SPI flash/psram的引脚,故也不应该使用; GPIO12-15通常用作JTAG调试使用; GPIO34-39只能用作输入模式并且内部没有软件上拉或者下拉功能; ADC2引脚当WiFi功能被使用时禁止使用,所以建议使用ADC1。 上图中排针旁边对应的数字就是GPIO x 为了帮助大家理解IO交换矩阵和IO MUX,我从技术参考手册里面找来这张图帮助大家理解 有些信号可以直接通过IO MUX直接送入外设,有些必须经过IO矩阵 IO的内部上拉、下拉实现框图 以上我们已经简单介绍了一些ESP32的GPIO,下面我们根据ESP-IDF开发框架来具体讲讲GPIO功能。 GitHub – espressif/esp-idf: Espressif IoT Development Framework. Official development framework for Espressif SoCs.https://github.com/espressif/esp-idf esp_err_t gpio_config(const gpio_config_t *pGPIOConfig)此接口用于配置GPIO,可以一次配置一个IO,也可以同时配置多个IO,前提是多个IO的属性相同。 下面让我们来看一下gpio_config_t这个结构体的内容 pin_bit_mask设置需要操作的GPIO引脚,例如我要设置GPIO1和GPIO33 则pin_bit_mask应该设置为(1ULL |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |