ESP32-引脚图(ESP-WROOM-32)学习笔记
介绍
该开发板包含了ESP-Wroom-32模块,该模块基于Tensilica Xtensa双核32位LX6微处理器。该处理器类似于ESP8266,但具有两个CPU内核(可以单独控制),以80至240MHz可调的时钟频率运行,并且以高达600DMIP(Dhrystone Million Instructions Per Second)执行。
ESP32控制器还有448 KB的ROM,520 KB的SRAM和4MB的闪存(用于程序和数据存储),足以应对组成网页的大字符串,JSON/XML数据以及我们在IOT设备上的所有内容。
ESP32集成了802.11b/g/n HT40 Wi-Fi收发器,因此它不仅可以连接到WiFi网络并与Internet进行交互,而且还可以建立自己的网络,从而允许其他设备直接连接到它。 ESP32也支持WiFi直连,这是对等连接而无需访问点的一个不错的选择。WiFi直连更容易设置,并且数据传输速度比蓝牙好得多
该芯片还具有双模式蓝牙功能,这意味着它支持蓝牙4.0(BLE/Bluetooth Smart)和蓝牙Classic(BT),使其更具用途。
电源
由于ESP32的工作电压范围为2.2V至3.6V,因此开发板带有LDO电压调节器,可将电压保持在3.3V。它可以可靠地提供600mA,当ESP32在RF传输过程中拉多达250mA时,这应该足够了。调节器的输出也引出到板的一侧,并标记为3v3。该引脚可用于为外部组件提供电源。
ESP32开发板的电源是通过Micro B USB连接器提供的。另外,如果您具有调节的5V电压源,则可以使用VIN引脚直接提供ESP32及其外围设备。
另外,ESP32芯片的睡眠电流小于5 µA,使其适用于电池供电和可穿戴的电子产品。
外围设备和I/O
ESP32总共有48个GPIO引脚,但其中只有25个被拆引出到开发板两侧的插头。这些引脚可以分配给各种外围职责,包括:
● 15个ADC通道 - 15个12位SAR ADC的通道。 ADC范围可以在固件中设置为0-1V,0-1.4V,0-2V或0-4V
● 2个UART接口 - 2个UART接口。一个用于串口加载代码。它们具有流控制,并支持IRDA!
● 25个PWM输出 - 25个用于调光LED或控制电动机的PWM引脚通道。
● 2个DAC通道 - 8位DAC可产生真正的模拟电压。
● SPI、I2C和I2S接口 - 有3个SPI和1个I2C接口,可连接各种传感器和外围设备,如果您想在项目中添加声音,则有两个I2S接口。
● 9个触摸引脚- 9个GPIO具有电容触摸感应。
板载开关和LED指示器
ESP32开发板具有两个按钮。一个标记为EN位于左上角的是复位按钮,用于复位ESP32芯片。左下角的另一个引导按钮是下载新草图/程序时使用的下载按钮。
开发板还具有2个LED指示灯 - 红色LED和蓝色LED。红色LED表示开发板已上电。蓝色LED是用户可编程的,连接到开发板的D2引脚。
串口通讯
开发板包括一颗Silicon Labs的CP2102 USB-TO-UART桥控制器,该芯片将USB信号转换为串口,并允许您的计算机与ESP32芯片进行编程和通信。
后期自己画板子,可以把这个芯片模块分开,减少主板体积!!!!!!!
引脚职责
得益于 ESP32 的引脚复用功能,允许多种外设共享单个 GPIO 引脚。例如,单个 GPIO 引脚既可以充当 ADC 输入、也可以充当DAC 输出或触摸板。
ESP32 引脚排列
GPIO 引脚
ESP32 开发板有 25 个 GPIO 引脚,可以通过编程相应的寄存器来分配不同的功能。GPIO 有多种类型:仅数字、模拟、电容触摸等。模拟 GPIO 和电容触摸 GPIO 可以配置为数字 GPIO。大多数数字 GPIO 都可以配置为内部上拉或下拉,或设置为高阻抗。
为了简单起见,我们将具有相似功能的引脚分组介绍。
● 电源引脚:有两组电源 - VIN引脚和3.3V引脚。如果您具有调节的5V电压源,则可以将VIN引脚用于直接提供ESP32及其外围设备。3.3V引脚是板载电压调节器的输出。该引脚可用于为外部组件提供电源。
● GND :是ESP32开发板的地。
● I2C和SPI引脚:是ESP32的硬件I2C和SPI引脚,可以连接您项目中各种传感器和外围设备。
● GPIO 引脚 :ESP32开发板具有25个GPIO引脚,可以通过编程方式分配给各种功能。每个启用的GPIO都可以配置为内部上拉或下拉或设置为高阻抗。当配置为输入时,也可以将其设置为边沿触发或电平触发以产生CPU中断。
● ADC 通道 :开发板集成了12位SAR ADC,并支持15个通道(模拟启用引脚)上的测量值。这些引脚中的一些可用于构建可编程增益放大器,该放大器用于测量小型模拟信号。 ESP32还可以在睡眠模式下操作时测量电压。
● DAC 通道:该开发板具有两个8位DAC通道,以将数字信号转换为真正的模拟电压。此双DAC可以驱动其他电路。
● 触摸引脚:开发板提供了9个电容式传感GPIO,可检测GPIO直接接触或与手指或其他物体近距离接近的电容变化。
● UART:ESP32开发板具有2个UART接口,即UART0和UART2,它们提供异步通信(RS232和RS485)和IRDA支持,并以高达5Mbps进行通信。 UART还提供了CTS和RTS信号以及软件流控制(XON和XOFF)的硬件管理。
● SPI:ESP32具有三个SPI(SPI、HSPI和VSPI)。这些SPI还支持以下通用SPI特征:
▘ SPI格式转移的4个正时模式
▘ 最多80 MHz和80 MHz的分开时钟
▘ 最多64字节FIFO
● 所有SPI也可以用于连接到外部闪存/SRAM和LCD。
● PWM引脚:开发板有25个由脉冲宽度调制(PWM)控制器控制的PWM引脚的通道(几乎所有GPIO引脚)。 PWM输出可用于驱动数字电动机和LED。控制器由PWM计时器和PWM操作组成。每个计时器都以同步或独立的形式提供时间,并且每个PWM操作为一个PWM通道生成波形。
● EN:用于使能ESP32。当上拉为高电平时启用芯片。当拉低时,芯片以最小的功率工作。
哪些 ESP32 GPIO 可以安全使用?
此外,还有具有特定功能的管脚,使它们适合或不适合特定项目。下表显示了哪些管脚最适合用作输入和输出,哪些管脚需要小心。
绿色突出显示的管脚可以使用。黄色突出显示的可以使用,但您需要注意,因为它们可能在启动时有意外行为。不建议将红色突出显示的管脚用作输入或输出。
仅输入的管脚
GPIO34到39是GPIs–仅输入的管脚。这些引脚没有内部上拉或下拉电阻。它们不能用作输出,因此只能将这些管脚用作输入:
GPIO 34
GPIO 35
GPIO 36
GPIO 39
集成在ESP-WROOM-32上的SPI闪存
GPIO 6到GPIO 11在一些ESP32开发板中是公开的。但是,这些引脚连接到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 x 12位ADC输入通道(而ESP8266只有1 x 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引脚时,您需要记住这一点。您将得到类似于下图所示的行为。
数模转换器(DAC)
ESP32上有2 x 8位DAC通道,用于将数字信号转换为模拟电压信号输出。这些是DAC通道:
DAC1 (GPIO25)
DAC2 (GPIO26)
RTC GPIOs
ESP32支持RTC GPIO。当ESP32处于深度睡眠状态时,可以使用路由到RTC低功耗子系统的GPIO。这些RTC gpio可用于在超低功耗(ULP)协处理器运行时将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)
脉冲宽度调制
ESP32 LED PWM控制器有16个独立通道,可以配置为生成具有不同特性的PWM信号。所有可以作为输出的管脚都可以用作PWM管脚(GPIOs 34到39不能产生PWM)。
要设置脉冲宽度调制信号,需要在代码中定义这些参数:
信号频率;
占空比;
脉宽调制通道;
要输出信号的GPIO。
I2C
ESP32有两个I2C通道,任何管脚都可以设置为SDA或SCL。将ESP32与Arduino IDE一起使用时,默认I2C引脚为:
GPIO 21(SDA)
GPIO 22(SCL)
如果要使用其他管脚,在使用导线库时,只需调用:
Wire.begin(SDA, SCL);
SPI
默认情况下,SPI的pin映射为:
中断
所有GPIO都可以配置为中断。
Strapping pins
ESP32芯片具有以下Strapping pins:
GPIO 0
GPIO 2
GPIO 4
GPIO 5(启动期间必须为高)
GPIO 12(启动期间必须低)
GPIO 15(启动期间必须为高)
这些用于将ESP32置于引导加载程序或烧录模式。在大多数内置USB/Serial的开发板上,您不需要担心这些管脚的状态。电路板使引脚处于正确的烧录或启动模式。有关ESP32引导模式选择的更多信息,请参见此处。
但是,如果你有外设连接到这些引脚,你可能会有困难,试图上传新的代码,用新固件烧录ESP32或重置板。如果您有一些外设连接到Strapping pins,并且您在上载代码或烧录ESP32时遇到问题,可能是因为这些外设阻止ESP32进入正确的模式。请阅读引导模式选择文档以指导您朝正确的方向前进。复位、烧录或启动后,这些引脚按预期工作。
Pins HIGH at Boot
一些GPIO在启动或重置时将其状态更改为高或输出PWM信号。这意味着,如果输出连接到这些gpio,则在ESP32重置或引导时可能会得到意外的结果。
GPIO 1
GPIO 3
GPIO 5
GPIO 6 to GPIO 11 (connected to the ESP32 integrated SPI flash memory – not recommended to use).
GPIO 14
GPIO 15
启用(EN)
启用(EN)是3.3V调节器的启用引脚。它被拉起来了,所以接地使3.3V调节器失效。例如,这意味着您可以使用连接到按钮的该管脚来重新启动ESP32。
GPIO电流消耗
根据ESP32数据表中的“推荐操作条件”部分,每个GPIO的绝对最大电流为40毫安。
ESP32内置霍尔效应传感器
ESP32还具有内置霍尔效应传感器,可检测周围磁场的变化。
更多推荐
所有评论(0)