ESP32芯片IO解读
我们使用一个开发板最重要得就是知道引脚得定义.所以我们有必要查到精确的资料,这篇文章很有用.也是我日后要查找得文章.
首先我们要明确一点,其实板子那么大,有用的就是这个核心的芯片
这个芯片上面的引脚引出来做相应的功能.
ESP32芯片具有48个功能齐全的引脚。并非所有ESP32开发板上的所有引脚都裸露,并且有些引脚无法使用。
ESP32外设包括:
18个模数转换器(ADC)通道
3个SPI接口
3个UART接口
2个I2C接口
16个PWM输出通道
2个数模转换器(DAC)
2个I2S接口
10个电容式感应GPIO
ADC(模拟到数字转换器)和DAC(数字到模拟转换器)功能分配给特定的静态引脚。但是,你可以确定哪些引脚是UART,I2C,SPI,PWM等–只需要在代码中分配它们即可。由于ESP32芯片具有多路复用功能,因此这是可能的。
这个是36脚的,国外卖的是这个板子.'
国内是30脚的
此外,还有具有特定功能的引脚,这些引脚使它们不适用于特定项目。下表显示了哪些引脚最适合用作输入,输出以及需要谨慎使用的引脚。
以绿色突出显示的引脚可以使用。黄色突出显示的选项可以使用,但是你需要注意,因为它们可能主要在启动时具有意外行为。不建议将红色突出显示的引脚用作输入或输出。
ok是好
红的
绿色的
黄色就是疯狂暗示的引脚,懂了吧
仅输入引脚
GPIO 34至39是GPI –仅输入引脚。这些引脚没有内部上拉或下拉电阻。它们不能用作输出,因此只能将这些引脚用作输入:
GPIO 34
GPIO 35
GPIO 36
GPIO 39
ESP-WROOM-32上集成了SPI闪存
某些ESP32开发板公开了GPIO 6至GPIO 11。但是,这些引脚连接到ESP-WROOM-32芯片上的集成SPI闪存,不建议用于其他用途。因此,请勿在您的项目中使用这些引脚:
GPIO 6(SCK / CLK)
GPIO 7(SDO / SD0)
GPIO 8(SDI / SD1)
GPIO 9(SHD / SD2)
GPIO 10(SWP / SD3)
GPIO 11(CSC / CMD)
电容式触摸GPIO
ESP32具有10个内部电容式触摸传感器。它们可以感应任何带有电荷的东西的变化,例如人体皮肤。因此,他们可以检测到用手指触摸GPIO时引起的变化。这些引脚可以轻松集成到电容性焊盘中,并取代机械按钮。电容式触摸引脚还可以用于将ESP32从深度睡眠中唤醒。
这些内部触摸传感器连接到以下GPIO:
T0(GPIO 4)
T1(GPIO 0)
T2(GPIO 2)
T3(GPIO 15)
T4(GPIO 13)
T5(GPIO 12)
T6(GPIO 14)
T7(GPIO 27)
T8(GPIO 33)
T9(GPIO 32)
模数转换器(ADC)
ESP32具有18个12位ADC输入通道(而ESP8266仅具有1个10位ADC)。这些是可用作ADC和相应通道的GPIO:
ADC1_CH0(GPIO 36)
ADC1_CH1(GPIO 37)
ADC1_CH2(GPIO 38)
ADC1_CH3(GPIO 39)
ADC1_CH4(GPIO 32)
ADC1_CH5(GPIO 33)
ADC1_CH6(GPIO 34)
ADC1_CH7(GPIO 35)
ADC2_CH0(GPIO 4)
ADC2_CH1(GPIO 0)
ADC2_CH2(GPIO 2)
ADC2_CH3(GPIO 15)
ADC2_CH4(GPIO 13)
ADC2_CH5(GPIO 12)
ADC2_CH6(GPIO 14)
ADC2_CH7(GPIO 27)
ADC2_CH8(GPIO 25)
ADC2_CH9(GPIO 26)
注意:使用Wi-Fi时不能使用ADC2引脚。因此,如果使用的是Wi-Fi,并且无法从ADC2 GPIO获取值,则可以考虑改用ADC1 GPIO,这样可以解决问题。
ADC输入通道具有12位分辨率。这意味着您可以获得的模拟读数范围为0至4095,其中0对应于0V,4095至3.3V。您还可以在代码上设置通道的分辨率以及ADC范围。
ESP32 ADC引脚没有线性行为。您可能将无法区分0和0.1V,或3.2和3.3V。使用ADC引脚时,请记住这一点。您将获得类似于下图所示的行为。
https://github.com/espressif/arduino-esp32/issues/92
数模转换器(DAC)
ESP32上有2 x 8位DAC通道,可将数字信号转换为模拟电压信号输出。这些是DAC通道:
DAC1(GPIO25)
DAC2(GPIO26)
脉宽调制
ESP32 LED PWM控制器具有16个独立通道,可配置为生成具有不同属性的PWM信号。所有可用作输出的引脚都可以用作PWM引脚(GPIO 34至39无法生成PWM)。
要设置PWM信号,您需要在代码中定义以下参数:
信号频率
占空比;
PWM通道
您要在其中输出信号的GPIO。
I2C
ESP32有两个I2C通道,任何引脚都可以设置为SDA或SCL。当将ESP32与Arduino IDE结合使用时,默认的I2C引脚为:
GPIO 21(SDA)
GPIO 22(SCL)
如果要使用其他引脚,则在使用线库时,只需调用:Wire.begin(SDA, SCL);
SPI
默认情况下,SPI的引脚映射为:
SPI
MOSI
MISO
CLK
CS
VSPI
GPIO 23
GPIO 19
GPIO 18
GPIO 5
HSPI
GPIO 13
GPIO 12
GPIO 14
GPIO 15
中断
所有GPIO都可以配置为中断。
Strapping Pins
ESP32芯片具有以下strapping pins:
GPIO 0
GPIO 2
GPIO 4
GPIO 5(启动期间必须为高电平)
GPIO 12(启动期间必须为LOW)
GPIO 15(引导期间必须为高电平
我实在不会翻译这个了....
RTC GPIO
ESP32上有RTC GPIO支持。当ESP32处于深度睡眠状态时,可以使用路由到RTC低功耗子系统的GPIO。当超低功耗(ULP)协处理器运行时,这些RTC GPIO可用于将ESP32从深度睡眠中唤醒。以下GPIO可用作外部唤醒源。
RTC_GPIO0(GPIO36)
RTC_GPIO3(GPIO39)
RTC_GPIO4(GPIO34)
RTC_GPIO5(GPIO35)
RTC_GPIO6(GPIO25)
RTC_GPIO7(GPIO26)
RTC_GPIO8(GPIO33)
RTC_GPIO9(GPIO32)
RTC_GPIO10(GPIO4)
RTC_GPIO11(GPIO0)
RTC_GPIO12(GPIO2)
RTC_GPIO13(GPIO15)
RTC_GPIO14(GPIO13)
RTC_GPIO15(GPIO12)
RTC_GPIO16(GPIO14)
RTC_GPIO17(GPIO27)
开机时为高电平
一些GPIO在引导或复位时将其状态更改为HIGH或输出PWM信号。这意味着如果您有连接到这些GPIO的输出,则在ESP32复位或启动时,可能会得到意想不到的结果。
GPIO 1
GPIO 3
GPIO 5
GPIO 6至GPIO 11(连接到ESP32集成SPI闪存–不建议使用)。
GPIO 14
GPIO 15
启用(EN)
使能(EN)是3.3V稳压器的使能引脚。它已上拉,因此接地需要禁用3.3V稳压器。例如,这意味着您可以使用连接到按钮的此引脚来重启ESP32。
GPIO电流消耗
根据ESP32数据手册中的“推荐工作条件”部分,每个GPIO消耗的绝对最大电流为40mA。
ESP32内置霍尔效应传感器
ESP32还具有内置霍尔效应传感器,可检测其周围磁场的变化。