ESP32 引脚参考:你应该使用哪些 GPIO 引脚?

释放双眼,带上耳机,听听看~!

ESP32 芯片有 48 个引脚,具有多种功能。并不是所有的 ESP32 开发板的管脚都暴露在外,有些管脚不能使用。

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

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

ESP32 引脚参考:你应该使用哪些 GPIO 引脚?

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

一、ESP32开发环境搭建(arduino)

ESP32 引脚参考:你应该使用哪些 GPIO 引脚?

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 芯片的多路复用功能,这是可能的。

虽然您可以在软件上定义管脚属性,但默认分配的管脚如下图所示(这是ESP32 DEVKIT V1 DOIT 板的 36 管脚示例 – 管脚位置可能因制造商而异)。

ESP32 引脚参考:你应该使用哪些 GPIO 引脚?

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

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

highlighted in red are not recommended to use as inputs or outputs.

GPIO 输入 输出 注释
0 上拉 OK 启动时输出PWM信号
1 TX pin OK 启动时调试输出
2 OK OK 连接到板载LED
3 OK RX pin 启动时拉高
4 OK OK  
5 OK OK 启动时输出PWM信号
6 x x 已连接到集成SPI闪存
7 x x 已连接到集成SPI闪存
8 x x 已连接到集成SPI闪存
9 x x 已连接到集成SPI闪存
10 x x 已连接到集成SPI闪存
11 x x 已连接到集成SPI闪存
12 OK OK 如果拉高,则启动失败
13 OK OK  
14 OK OK 启动时输出PWM信号
15 OK OK 启动时输出PWM信号
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   仅限输入
35 OK   仅限输入
36 OK   仅限输入
39 OK   仅限输入

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

仅输入引脚

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

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

GPIO 6 到 GPIO 11 暴露在一些 ESP32 开发板上。但是,这些引脚连接到 ESP-WROOM-32 芯片上的集成 SPI 闪存,不推荐用于其他用途。所以,不要在你的项目中使用这些引脚:

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

ESP32 引脚参考:你应该使用哪些 GPIO 引脚?

数模转换器 (DAC)

ESP32 上有 2 个 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。在 Arduino IDE 中使用 ESP32 时,默认的 I2C 引脚为:

  • 通用输入输出接口 21 (SDA)
  • GPIO 22 (SCL)

如果你想在使用线库时使用其他管脚,你只需要调用:

Wire.begin(SDA, SCL);

SPI

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

SPI MOSI MISO CLK CS
VSPI 通用输入输出接口 23 通用输入输出接口 19 通用输入输出接口 18 通用输入输出接口 5
HSPI 通用输入输出接口 13 通用输入输出接口 12 通用输入输出接口 14 通用输入输出接口 15

 

中断

所有 GPIO 都可以配置为中断。

Strapping引脚(捆绑引脚?)

ESP32 芯片有以下strapping引脚:

  • 通用输入输出 0
  • 通用输入输出接口 2
  • 通用输入输出接口 4
  • GPIO 5(启动时必须为高电平)
  • GPIO 12(启动期间必须为低电平)
  • GPIO 15(启动时必须为高电平)

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

但是,如果您将外围设备连接到这些引脚,您可能无法尝试上传新代码、使用新固件刷新 ESP32 或重置电路板。如果您有一些外围设备连接到Strapping引脚,并且在上传代码或刷新 ESP32 时遇到问题,可能是因为这些外围设备阻止了 ESP32 进入正确模式。resetting、flashing或booting后,这些引脚按预期工作。

引导时引脚为高电平

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

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

启用 (EN)

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

GPIO 电流消耗

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

ESP32 内置霍尔效应传感器

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

给TA打赏
共{{data.count}}人
人已打赏
ESP32-进阶免费项目

ESP32 / ESP8266将数据发布到Raspberry Pi LAMP Server

2022-8-27 17:32:23

ESP32-进阶免费项目

带滑块的 ESP32 Web 服务器:网页控制 LED 亮度 (PWM)

2022-8-28 1:51:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
'); })();