Esp32引脚资源详细
创建时间:2023-11-22 01:31:41
![图片](https://upload.ch123.com.cn/news/info/23_09_14/22_0_22192447.png)
注意:
----
#### 1. 在硬件上要注意使用外接模块时不能将GPIO12拉高,否则将导致ESP32启动异常。还有一些GPIO在启动或重置时其状态更改为高或者输出PWM信号,在使用时需要注意。
不建议使用或限制使用的引脚
不建议使用 Strapping引脚 ,SPI flash 引脚 以及 仅输入的引脚
Strapping 引脚
GPIO 0
GPIO 2
GPIO 4
GPIO 5 (启动时必须为高电平)
GPIO 12 (启动时必须为低电平)
GPIO 15 (启动时必须为高电平)
#### 2. 集成在ESP-WROOM-32 的 SPI flash 引脚
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)
#### 3. 仅输入引脚
GPIO 34 到 39 是 GPI – 仅输入引脚。这些引脚没有内部上拉或下拉电阻。它们不能用作输出,因此只能将这些引脚用作输入:
GPIO 34
GPIO 35
GPIO 36
GPIO 39
这些引脚都是ESP32用于引导加载程序或者烧录模式/在大多数内置USB/Serial的开发板上,不需要担心这些引脚的状态,开发板会把这些引脚设置为正确的状态,以便使用烧录或启动模式。
但是,如果你有外设连接到这些引脚上,当你在尝试上传新代码、用新固件烧写ESP32或重置电路板时可能会遇到麻烦,例如不明原因的错误和失败。可能是因为这些外设阻止ESP32进入正确的模式。
所以以上的引脚 不建议在项目中使用。
ESP32 周边设备:
---
18 个模数转换器 (ADC) 通道
4 组SPI接口
3 组UART接口
1 组I2C接口
16 个PWM输出通道
2 个数模转换器 (DAC)
2 个I2S接口
10 个电容式感应 GPIO
16 个 RTC GPIO
ESP32 内置2个霍尔传感器
18 个模数转换器 (ADC) 通道
---
ESP32 有 18 x 12 位 ADC 输入通道(而ESP8266 只有 1x 10 位 ADC)。这些是可用作 ADC 和相应通道的 GPIO:
与某些数字外设(PWM、软件 SPI 和 I2C)不同,ADC 引脚是固定的,即您必须使用具有 ADC 功能的预定义 GPIO 引脚,并且不能在软件中对其进行配置。但是,您必须了解一些限制。
尽管 ESP32 有 18 个通道的 ADC,但并非所有 ADC 引脚都可供用户使用。在 8 个 ADC1 通道中,只有 6 个可用(ACD1_CH0 和 ACD1_CH3 到 ACD1_CH7),而 ADC1_CH1 和 ADC1_CH2 不可用(即使引脚在 ESP32 开发板中没有暴露)。
来到ADC2,就有些复杂了。当您使用 ESP32 的 Wi-Fi 时,Wi-Fi Driver 使用 ADC2 Peripheral。因此,只有在未启动 Wi-Fi 驱动程序时才能使用 ADC2。
即使您正在使用 ADC2(假设未使用 Wi-Fi),所有引脚也并非随时可用,因为与 ADC2 相关的一些引脚用于其他重要目的(引导绑定)。
ADC Channel Pin Name GPIO Pin Notes
ACD1_CH0 A0 36 可用 / 内置霍尔传感器
ACD1_CH1 \ 37 不可用
ACD1_CH2 \ 38 不可用
ACD1_CH3 A3 39 可用 / 内置霍尔传感器
ACD1_CH4 A4 32 可用
ACD1_CH5 A5 33 可用
ACD1_CH6 A6 34 可用
ACD1_CH7 A7 35 可用
ACD2_CH0 A10 4 启动WIFI时不可用
ACD2_CH1 A11 0 不可用 / 用于BOOT
ACD2_CH2 A12 2 用于BOOT Strapping
ACD2_CH3 A13 15 用于BOOT Strapping
ACD2_CH4 A14 13 启动WIFI时不可用
ACD2_CH5 A15 12 启动WIFI时不可用
ACD2_CH6 A16 14 启动WIFI时不可用
ACD2_CH7 A17 27 启动WIFI时不可用
ACD2_CH8 A18 25 启动WIFI时不可用
ACD2_CH9 A19 26 启动WIFI时不可用
ADC 输入通道具有 12 位分辨率。这意味着您可以获得范围从 0 到 4095 的模拟读数,其中 0 对应于 0V,4095 对应于 3.3V。您还可以在代码和 ADC 范围上设置通道的分辨率。
ESP32 ADC 引脚没有线性行为。您可能无法区分 0 和 0.1V,或 3.2 和 3.3V。使用 ADC 引脚时需要牢记这一点。您将获得类似于下图所示的行为。
4组SPI接口
---
默认情况下,可以用的SPI的引脚映射是:
SPI MOSI MISO CLK CS
VSPI(SPI3) GPIO 23 GPIO 19 GPIO 18 GPIO 5
HSPI(SPI2) GPIO 13 GPIO 12 GPIO 14 GPIO 15
SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率较高的场合。
芯片的管脚上只占用四根线。
MISO: 主器件数据输出,从器件数据输入。
MOSI:主器件数据输入,从器件数据输出。
SCK: 时钟信号,由主设备控制发出。
NSS(CS): 从设备选择信号,由主设备控制。当NSS为低电平则选中从器件。
ESP32集成了4组SPI外设。
SPI0和SPI1在内部用于访问ESP32所连接的闪存。两个控制器共享相同的SPI总线信号,并且有一个仲裁器来确定哪个可以访问该总线。
SPI2和SPI3是通用SPI控制器,有时分别称为HSPI和VSPI。它们向用户开放。SPI2和SPI3具有独立的总线信号,分别具有相同的名称。每条总线具有3条CS线,最多能控制6个SPI从设备。
需要注意的是,HSPI和VSPI并不是网友们认为的high-speed SPI 和Very High-speed SPI,这是SPI和HSPI、VSPI是一样的,只不过是换个名字用于区分,SPI相当于SPI0或SPI1,HSPI相当于SPI2,VSPI相当于SPI3。
![](https://upload.ch123.com.cn/news/info/23_09_14/22_1_22193342.png)
3V3 - 供电引脚,输出3.3V电压。
EN - 使能引脚,用于控制模块的上电和复位。
GND - 地引脚,接地。
GPIO0 - 通用IO引脚,可用作数字输入/输出。
GPIO1 - 通用IO引脚,可用作数字输入/输出。
GPIO2 - 通用IO引脚,可用作数字输入/输出。
GPIO3 - 通用IO引脚,可用作数字输入/输出。
GPIO4 - 通用IO引脚,可用作数字输入/输出。
GPIO5 - 通用IO引脚,可用作数字输入/输出。
GPIO6 - 通用IO引脚,可用作数字输入/输出。
GPIO7 - 通用IO引脚,可用作数字输入/输出。
GPIO8 - 通用IO引脚,可用作数字输入/输出。
GPIO9 - 通用IO引脚,可用作数字输入/输出。
GPIO10 - 通用IO引脚,可用作数字输入/输出。
GPIO11 - 通用IO引脚,可用作数字输入/输出。
GPIO12 - 通用IO引脚,可用作数字输入/输出。
GPIO13 - 通用IO引脚,可用作数字输入/输出。
GPIO14 - 通用IO引脚,可用作数字输入/输出。
GPIO15 - 通用IO引脚,可用作数字输入/输出。
GPIO16 - 通用IO引脚,可用作数字输入/输出。
GPIO17 - 通用IO引脚,可用作数字输入/输出。
GPIO18 - 通用IO引脚,可用作数字输入/输出。
GPIO19 - 通用IO引脚,可用作数字输入/输出。
GPIO21 - 通用IO引脚,可用作数字输入/输出。 SDA
GPIO22 - 通用IO引脚,可用作数字输入/输出。 SCL
GPIO23 - 通用IO引脚,可用作数字输入/输出。
GPIO25 - 通用IO引脚,可用作数字输入/输出。
U0RXD - UART0接收引脚。
U0TXD - UART0发送引脚。
SD2 - SPI2数据引脚。
SD3 - SPI2数据引脚。
CMD - SPI命令引脚。
SD0 - SPI数据引脚。
SD1 - SPI数据引脚。
CLK - SPI时钟引脚。
ADC1_CH0 - ADC1通道0引脚。
ADC1_CH1 - ADC1通道1引脚。
ADC1_CH2 - ADC1通道2引脚。
ADC1_CH3 - ADC1通道3引脚。
ADC1_CH4 - ADC1通道4引脚。
ADC1_CH5 - ADC1通道5引脚。
ADC1_CH6 - ADC1通道6引脚。
ADC1_CH7 - ADC1通道7引脚。
BOOT - 启动引脚,用于模块的启动。
VDD_SDIO - SD卡电源引脚。
U1TXD - UART1发送引脚。
U1RXD - UART1接收引脚。
GPIO33 - 通用IO引脚,可用作数字输入/输出。
GPIO32 - 通用IO引脚,可用作数字输入/输出。
GPIO35 - 通用IO引脚,可用作数字输入/输出。
GPIO34 - 通用IO引脚,可用作数字输入/输出。
GPIO39 - 通用IO引脚,可用作数字输入/输出。
GPIO36 - 通用IO引脚,可用作数字输入/输出。
GPIO37 - 通用IO引脚,可用作数字输入/输出。
GPIO38 - 通用IO引脚,可用作数字输入/输出。