ESP32引脚使用注意事项

主要参考:

各引脚分别作为输入输出时的推荐程度和注意事项说明:

引脚说明

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

电容式触摸 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 并非线性(Inconsistent values when using “analogRead()”)。可能无法区分 0 和 0.1V,或 3.2 和 3.3V。使用 ADC 引脚时需要牢记这一点。您将获得类似于下图所示的行为。

ESP32 ADC关系

DAC

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

  • DAC1 (GPIO25)
  • DAC2 (GPIO26)

RTC GPIOs

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)

PWM

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

I2C

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

  • GPIO 21 (SDA)
  • GPIO 22 (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

这些引脚有的影响启动,接外部设备启动时最好不传入信号

  • GPIO 0
  • GPIO 2
  • GPIO 4
  • GPIO 5 (boot时必须为高)
  • GPIO 12 (boot时必须为低)
  • GPIO 15 (boot时必须为高t)

boot时为高的引脚

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

  • GPIO 1
  • GPIO 3
  • GPIO 5
  • GPIO 6 to GPIO 11 (连接到ESP32内部SPI闪存——不建议使用)
  • GPIO 14
  • GPIO 15

Enable (EN)

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

GPIO电流消耗

根据ESP32数据表中的“推荐工作条件(Recommended Operating Conditions)”一节,每个GPIO消耗的绝对最大电流为40mA。

内置霍尔效应传感器

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

1
2
//Arduino API
val = hallRead();//读取霍尔传感器值

常见引脚图

ESP WROOM 32

ESP WROOM 32

ESP32 DEVKIT V1 DOIT

 ESP32 DEVKIT V1 DOIT