ESP32 Arduino引脚分配参考:您应该使用哪些 GPIO 引脚?

ESP32 芯片有 48 个引脚,具有多种功能。并非所有 ESP32 开发板中的所有引脚都暴露出来,有些引脚无法使用。

关于如何使用 ESP32 GPIO 有很多问题。您应该使用什么引脚?您应该避免在项目中使用哪些引脚?这篇文章旨在成为 ESP32 GPIO 的简单易懂的参考指南。

下图显示了 ESP-WROOM-32 引脚排列。如果您使用ESP32 裸芯片构建定制板,可以将其用作参考:

ESP32 Arduino引脚分配参考:您应该使用哪些 GPIO 引脚?_第1张图片

注意:并非所有开发板都可以访问所有 GPIO,但无论您使用哪种开发板,每个特定 GPIO 都以相同的方式工作。如果您刚刚开始使用 ESP32,我们建议您阅读我们的指南:ESP32 开发板入门。

ESP32 Arduino引脚分配参考:您应该使用哪些 GPIO 引脚?_第2张图片

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 个引脚的ESP32 DEVKIT V1 DOIT 板的示例- 引脚位置可能会根据制造商而变化)。

ESP32 Arduino引脚分配参考:您应该使用哪些 GPIO 引脚?_第3张图片

 

此外,还有一些具有特定功能的引脚,这些功能使其适合或不适合特定项目。下表显示了哪些引脚最适合用作输入、输出以及哪些引脚需要小心。

以绿色突出显示的引脚可以使用。以黄色突出显示的可以使用,但您需要注意,因为它们可能主要在启动时出现意外行为。不建议将红色突出显示的引脚用作输入或输出。

GPIO Input Output Notes
0 pulled up OK outputs PWM signal at boot, must be LOW to enter flashing mode
1 TX pin OK debug output at boot
2 OK OK connected to on-board LED, must be left floating or LOW to enter flashing mode
3 OK RX pin HIGH at boot
4 OK OK
5 OK OK outputs PWM signal at boot, strapping pin
6 x x connected to the integrated SPI flash
7 x x connected to the integrated SPI flash
8 x x connected to the integrated SPI flash
9 x x connected to the integrated SPI flash
10 x x connected to the integrated SPI flash
11 x x connected to the integrated SPI flash
12 OK OK boot fails if pulled high, strapping pin
13 OK OK
14 OK OK outputs PWM signal at boot
15 OK OK outputs PWM signal at boot, strapping pin
16 OK OK
17 OK OK
18 OK OK
19 OK OK
21 OK OK
22 OK OK
23 OK OK
25 OK OK
26 OK OK
27 OK OK
32 OK OK
33 OK OK
34 OK input only
35 OK input only
36 OK input only
39 OK input only

继续阅读有关 ESP32 GPIO 及其功能的更详细和深入的分析。

仅输入引脚

GPIO 34 至 39 是 GPI – 仅输入引脚。这些引脚没有内部上拉或下拉电阻。它们不能用作输出,因此只能将这些引脚用作输入:

  • 通用输入输出口34
  • 通用输入输出口35
  • 通用输入输出口36
  • 通用输入输出口39

ESP-WROOM-32 上集成的 SPI 闪存

某些 ESP32 开发板中暴露了 GPIO 6 至 GPIO 11。不过,这些引脚连接到 ESP-WROOM-32 芯片上的集成 SPI Flash,不建议用于其他用途。因此,不要在您的项目中使用这些引脚:

  • 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 只有 1x 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 引脚时需要记住这一点。您将得到类似于下图所示的行为。

ESP32 Arduino引脚分配参考:您应该使用哪些 GPIO 引脚?_第4张图片

数模转换器 (DAC)

ESP32 上有 2 x 8 位 DAC 通道,用于将数字信号转换为模拟电压信号输出。这些是 DAC 通道:

  • DAC1(GPIO25)
  • DAC2(GPIO26)

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)

脉宽调制

ESP32 LED PWM 控制器具有 16 个独立通道,可配置为生成具有不同属性的 PWM 信号。所有可用作输出的引脚均可用作 PWM 引脚(GPIO 34 至 39 不能生成 PWM)。

要设置 PWM 信号,您需要在代码中定义这些参数:

  • 信号的频率;
  • 占空比;
  • 脉宽调制通道;
  • 您要输出信号的 GPIO。

I2C

ESP32 有两个 I2C 通道,任何引脚都可以设置为 SDA 或 SCL。当将 ESP32 与 Arduino IDE 结合使用时,默认的 I2C 引脚为:

  • GPIO 21(SDA)
  • GPIO 22(SCL)

如果在使用wire库时想使用其他引脚,只需调用:

Wire.begin(SDA, SCL);

SPI

默认情况下,SPI 的引脚映射为:

SPI 莫西 味噌 时钟脉冲 CS
VSPI 通用输入输出口23 通用输入输出口19 通用输入输出口18 通用输入输出口5
HSPI 通用输入输出口13 通用输入输出口12 通用输入输出口14 通用输入输出口15

 

中断

所有 GPIO 均可配置为中断。

捆扎别针

ESP32 芯片有以下捆扎引脚:

  • GPIO 0(必须为低电平才能进入启动模式)
  • GPIO 2(启动期间必须悬空或为低电平)
  • 通用输入输出口4
  • GPIO 5(启动期间必须为高电平)
  • GPIO 12(启动期间必须为低电平)
  • GPIO 15(启动期间必须为高电平)

这些用于将 ESP32 置于引导加载程序或闪存模式。在大多数内置 USB/串口的开发板上,您无需担心这些引脚的状态。该板将引脚置于正确的状态以进行闪烁或启动模式。

但是,如果您有外设连接到这些引脚,则在尝试上传新代码、使用新固件刷新 ESP32 或重置开发板时可能会遇到困难。如果您有一些外设连接到捆绑引脚,并且您在上传代码或刷新 ESP32 时遇到问题,可能是因为这些外设阻止了 ESP32 进入正确的模式。

启动时引脚为高电平

一些 GPIO 在启动或复位时将其状态更改为高电平或输出 PWM 信号。这意味着,如果您有连接到这些 GPIO 的输出,则当 ESP32 重置或启动时,您可能会得到意外的结果。

  • 通用输入输出口1
  • 通用输入输出口3
  • 通用输入输出口5
  • GPIO 6 至 GPIO 11(连接至 ESP32 集成 SPI 闪存 – 不建议使用)。
  • 通用输入输出口14
  • 通用输入输出口15

启用(EN)

使能 (EN) 是 3.3V 稳压器的使能引脚。它被拉高,因此连接到地以禁用 3.3V 稳压器。例如,这意味着您可以使用连接到按钮的该引脚来重新启动 ESP32。

GPIO 电流消耗

根据 ESP32 数据表中的“推荐工作条件”部分,每个 GPIO 消耗的绝对最大电流为 40mA。

ESP32 内置霍尔效应传感器

ESP32 还具有内置霍尔效应传感器,可检测周围磁场的变化。

你可能感兴趣的:(ESP32,Arduino实战教程,单片机,嵌入式硬件,mcu,驱动开发)