ESP32-DevKit开发板引脚功能介绍

发布时间:— | 来源:语雀(nicheng-yk7a1 / yq6u33)

ESP32-DevKit开发板引脚功能介绍

ESP32 芯片、模组、开发板对比

图示:ESP32 芯片、模组、开发板对比

ESP芯片、模组、开发板对比

我们在进行项目开发的时候,通常我们会习惯说使用的是 ESP32 开发。上图展示了 ESP32 从芯片到开发板的不同外观。通常情况下,我们开发项目或者是学习时,使用的更多的是开发板或模组,很少会使用到芯片。因为从 ESP32 芯片到要能运行我们的程序,还需要很多外围电路的支持,为了开发的方便,官方也才设计制作了模组。ESP32/8266 芯片由“乐鑫科技”设计,最开始模组由“安信可科技”代为设计,后面“乐鑫”自己也开始设计制作模组,所以会在市面上看到不同的模组,其核心的芯片都是“乐鑫”的 ESP32/8266 芯片。模组的不同厂家主要看模组屏蔽罩上面的激光钢印,通常情况下都会喷上厂商的 logo。

乐鑫和安信可 logo 对比

图示:乐鑫和安信可 logo 对比

ESP32 DevKit 开发板是常见的 ESP32 开发板,这里我们给出两个常见开发板型号:ESP32-DevKitC-1 和 ESP32-DevKit V1。因为是开源项目,所以市面上会出现多个版本的开发板,主要区别是 USB 接口不同、USB 转串口芯片厂商不同以及电子元件的布局不同,在使用上没有太大差异。

ESP32-DevKitC-1开发板引脚分布图

ESP32-DevKitC-1 开发板引脚分布图

图示:乐鑫官方发布的 ESP32 DevKitC-1 开发板引脚分布

上图由乐鑫官方发布,作者做了简单的中文标记。ESP32-DevKitC-1 开发板引出引脚为 38 个,其中有 3 个 GND 引脚,1 个 5V 供电引脚,1 个 3.3V 电压输出引脚,1 个 EN 使能引脚以及其他 32 个 GPIO 口。

ESP32-DevKitC-1 开发板实物图

图示:38pin 的 ESP32 DevKitC-1 实物图

ESP32 DevKit V1 开发板引脚分布图

以上两块开发板是比较常见的两个版本的 ESP32 开发板。因为两个版本的开发板采用的 ESP32 模组为同一个型号,所以开发板资源、引脚以及功能都大致相同。仔细的你会发现,DevKit V1 开发板只有 30 个引脚,而 DevKitC-1 开发板有 38 个引脚引出。仔细核对,DevKitC-1 开发板多出和模组内部 Flash 芯片连接的 6 个 GPIO 引脚,多出 1 个 GND 引脚和 1 个 BOOT(GPIO0)引脚。

需要注意的是,多出的 6 个 GPIO 引脚,已经和模组内部的 FLASH 芯片链接,这些引脚不能再作为通用的 GPIO 口使用的。所以在实际开发中,两个开发板没有任何区别,在 Arduino 编程时,选择开发板都可以选择 ESP32 Dev Module 开发板。

ESP32 DevKitC-1 开发板引脚功能

开发板如上图所示,让 USB 接口向下,我们把开发板的所有引脚分为左侧和右侧两列。

左侧列(USB 接口向下)
编号名称引脚类型功能复位后状态特殊功能
13V3P3.3 V 电源供给3.3V输出 3.3V
2ENICHIP_PU, 芯片复位(低)外部上拉
3IO36IGPIO36, ADC1_CH0, S_VP输入输出禁止仅为输入引脚不能输出使用
4IO39IGPIO39, ADC1_CH3, S_VN输入输出禁止
5IO34IGPIO34, ADC1_CH6, VDET_1输入输出禁止
6IO35IGPIO35, ADC1_CH7, VDET_2输入输出禁止
7IO32I/OGPIO32, ADC1_CH4, TOUCH_CH9, XTAL_32K_P输入输出禁止
8IO33I/OGPIO33, ADC1_CH5, TOUCH_CH8, XTAL_32K_N输入输出禁止
9IO25I/OGPIO25, ADC1_CH8, DAC_1输入输出禁止DAC 输出
10IO26I/OGPIO26, ADC2_CH9, DAC_2输入输出禁止DAC 输出
11IO27I/OGPIO27, ADC2_CH7, TOUCH_CH7输入输出禁止
12IO14I/OGPIO14, ADC2_CH6, TOUCH_CH6, MTMS输入弱上拉
13IO12I/OGPIO12, ADC2_CH5, TOUCH_CH5, MTDI输入弱下拉
14GNDGGround0V
15IO13I/OGPIO13, ADC2_CH4, TOUCH_CH4, MTCK输入弱下拉
16IO9I/OGPIO9, D2和 FLASF 连接,外部禁用
17IO10I/OGPIO10, D3
18IO11I/OGPIO11, CMD
195V0P5 V 电源输入5V
右侧列(USB 接口向下)
编号名称引脚类型功能复位后状态特殊功能
1GNDGGround0V
2IO23I/OGPIO23输入
3IO22I/OGPIO22输入
4IO1I/OGPIO1, U0TXD输入弱上拉串口
5IO3I/OGPIO3, U0RXD输入弱上拉串口
6IO21I/OGPIO21输入
7GNDGGround0V
8IO19I/OGPIO19输入
9IO18I/OGPIO18输入
10IO5I/OGPIO5输入弱上拉
11IO17I/OGPIO17输入
12IO16I/OGPIO16输入
13IO4I/OGPIO4, ADC2_CH0, TOUCH_CH0输入弱下拉
14IO0I/OGPIO0, ADC2_CH1, TOUCH_CH1, Boot输入弱上拉BOOT
15IO2I/OGPIO2, ADC2_CH2, TOUCH_CH2输入弱下拉
16IO15I/OGPIO15, ADC2_CH3, TOUCH_CH3, MTDO输入弱上拉
17IO8I/OGPIO8, D1和 FLASF 连接,外部禁用
18IO7I/OGPIO7, D0
19IO6I/OGPIO6, SCK

注:GPIO:传统的输入输出接口,注意特殊情况;ADCx_CHx:引脚具有模数转换功能,ESP32 有 2 个 ADC、16 个通道可以选择;TOUCH_CHx:触摸功能引脚;RTC:低功耗唤醒引脚。

以上就是 ESP32 DevKitC-1 开发板的引脚功能详细表,需要注意的是,在以上表格中除了电源引脚以外,深色标识并且标记为删除符号的引脚为外部禁用引脚,日常使用是不可用;标记为浅橙色的引脚为仅有输入功能,使用时不可当作输出功能使用。由于是开源的原因,对于不同的开发板,引脚顺序有可能和以上表格不一致,具体使用请以实际使用的开发板上的丝印标识为准。

ESP32 开发板程序引导占用引脚说明

ESP32 在通电的瞬间,需要进行程序的选择,又叫引导程序。通过外部的一些 GPIO 口不同的状态,程序选择是进入上传用户程序,还是进入运行用户程序。此时这些 GPIO 口的状态决定了程序的选择,下面列出这些 GPIO 在程序引导时的状态。在需要使用到这些引脚的时候需要特别注意。

程序引导占用引脚
GPIO默认功能拉起下拉
IO12下拉内部LDO的电压 (VDD_SDIO)1.8V3.3V
IO0拉起启动模式SPI 启动下载引导
IO2下拉启动模式无所谓下载引导
IO15拉起在引导和SDIO从设备定时期间启用/禁用日志打印U0TXD 活动U0TXD 静音
IO5拉起SDIO从设备的定时需要详细了解请查看 ESP32 芯片手册

GPIO 介绍

ESP32 开发板有 32 个 GPIO 引脚,实际可用的有 26 个(部分开发板有 25 个)。可以通过编程相应的寄存器来分配不同的功能。GPIO 有多种类型:仅数字、模拟、电容触摸等。模拟 GPIO 和电容触摸 GPIO 可以配置为数字 GPIO。大多数数字 GPIO 都可以配置为内部上拉或下拉,或设置为高阻抗。

ESP32 通过功能复用的形式,在 20 多个引脚上实现了众多的功能,每个 GPIO 上有多个功能,但是其中一些引脚可能会不适合在任何情况下使用。下表将列出首选安全可用的引脚,在引脚数量不紧张时优先考虑使用这些引脚。一些特殊功能引脚,特别是在启动期间或者是上传程序期间,使用到一些特殊引脚,可能会出现致命的错误,比如上传程序失败,所以在非必要情况下不要使用。

首选安全可用引脚
引脚编号输入输出安全否?原因
GPIO0弱上拉OK启动期间必须为高电平,上传程序时必须为低电平
GPIO1TX 引脚OK串口 TX 引脚,用于上传程序和调试
GPIO2OKOK启动期间必须为低电平,连接到板载 LED(若有的话)
GPIO3RX 引脚OK串口 RX 引脚,用于上传程序和调试
GPIO4OKOK
GPIO5OKOK启动期间必须为高电平
GPIO6xx连接到模组的 FLASH
GPIO7xx连接到模组的 FLASH
GPIO8xx连接到模组的 FLASH
GPIO9xx连接到模组的 FLASH
GPIO10xx连接到模组的 FLASH
GPIO11xx连接到模组的 FLASH
GPIO12OKOK启动期间必须为低电平
GPIO13OKOK
GPIO14OKOK
GPIO15OKOK
GPIO16OKOK
GPIO17OKOK
GPIO18OKOK
GPIO19OKOK
GPIO21OKOK
GPIO22OKOK
GPIO23OKOK
GPIO24OKOK
GPIO25OKOK
GPIO26OKOK
GPIO27OKOK
GPIO32OKOK
GPIO33OKOK
GPIO34OK进作为输入,不能作为输出使用
GPIO35OK进作为输入,不能作为输出使用
GPIO36OK进作为输入,不能作为输出使用
GPIO39OK进作为输入,不能作为输出使用

ADC 引脚

ESP32 集成有 2 个 12 位的 ADC,支持 16(15)个通道的测量。这些引脚可以将模拟电压值转换为数字值,换句话说,这些引脚可以将 0-3.3V 的电压转换为 0-4095 之间的数字,分辨率为 0.8mV。还可以通过代码对 ADC 的分辨率和范围进行设置。2 个 ADC 分为了 2 组,ADC1 和 ADC2,如果需要使用到 ESP32 的 WiFi 功能,则此时 ADC2 不可用,只用 ADC1,这个需要注意。

DAC 引脚

ESP32 设计有两个 8 位的 DAC 通道,分别在 GPIO25 和 GPIO26 引脚,用于将数字信号转换为模拟电压值。这两个 DAC 通道具有 8 位分辨率,意味着它可以将 0-255 范围内的值转换为 0-3.3V 范围的电压。

TOUCH 触摸引脚

ESP32 设计有 9 个 TOUCH 触摸功能引脚,这些引脚分布在引脚功能图中标记有 TOUCH 的引脚。当电容性负载靠近具有 TOUCH 功能的引脚时,ESP32 会检测到电容的变化。可以将导电物品连接到触摸引脚,例如铝箔、铜箔、导电涂料等。由于电路的低噪声设计和高灵敏度,可以制作相对较小的焊盘。此外,这些 TOUCH 引脚还具有 RTC 低功耗唤醒功能。

PWM 引脚

ESP32 具有 21 路的 PWM 通道(26 个 GPIO 引脚除了只有输入功能的其他引脚都具有)。PWM 输出可以用于驱动电机和 LED 等外设。

RTC_GPIO 引脚

ESP32 具有 16 个 RTC 功能引脚,这些引脚可以让程序系统从低功耗模式唤醒。

IIC 引脚

ESP32 具有一个 IIC 接口总线,该 IIC 总线最多允许连接 112 个该接口的传感器和外设。默认情况下 SDA 和 SCL 引脚分配在 GPIO22(SCL)和 GPIO21(SDA)两个引脚。在程序设计时,可以通过 Wire.begin(SDA, SCL) 函数来修改 IIC 引脚。

SPI 引脚

ESP32 具有三个 SPI(SPI、HSPI、VSPI),支持从机和主机模式。需要注意的是,VSPI 和 HSPI 是可以用的接口,第三条 SPI 总线已由集成闪存芯片使用。很多时候 HSPI 被误解为硬件 SPI,VSPI 被误解为虚拟或者软件 SPI,但是实际上他们是相同的。在程序设计时可以通过 bus.begin(CLK_PIN, MISO_PIN, MOSI_PIN, SS_PIN) 函数设置 SPI 的引脚接口。

串口引脚

ESP32 开发板具有三个 UART 接口:UART0、UART1 和 UART2,支持异步通信。UART0 已经连接至开发板上的 USB 转串口芯片,用于上传程序和调试使用,所以不再建议使用 UART0 引脚连接其他外设。UART1 引脚已为内部集成闪存芯片保留。UART2 可以连接外设使用,UART2 引脚分配在 UART2_TXD(GPIO17)和 UART2_RXD(GPIO16)引脚。此外,UART 还提供 CTS 和 RTS 信号的硬件管理。

电源引脚

ESP32 开发板的电源引脚有 1 个 5V 电源引脚,1 个 3.3V 电源引脚和 3 个 GND 引脚。5V 引脚是为主板供电的接口,供电电压值不能超过 5V。3.3V 引脚是主板往外输出 3.3V 电压的接口。供电从 5V 输入,开发板上集成 5V-3.3V 转换芯片,3.3V 供给 ESP32 模组工作,并从 3.3V 引脚输出给其他外设使用。

EN 使能引脚

EN 引脚是 ESP32 的使能引脚,默认拉高,当 EN 被拉高后,芯片使能工作;但 EN 被拉低后,芯片被禁止。在 ESP32 开发板上 EN 引脚还连接到一个按键,该按键可以将 EN 拉低触发 ESP 芯片复位。