陈叨叨·幻色

  • 首页
  • 激情海钓
  • 叨摄型影
  • 叨舍闲居
  • 叨说天下
  • 学无止境
  • 程序开发
  • 电脑数码
  • 灵光乍现
宁可一次一次的去撞南墙,也不能一个一个的失去理想。
  1. 首页
  2. 学无止境
  3. 正文

ESP32 引脚参考

2023-01-24 2820点热度 0人点赞 0条评论

翻译自:原文链接

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

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

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

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


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 DEVKIT V1 DOIT 开发板,带 36 引脚引出线

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

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

仅输入引脚

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

  • GPIO 34
  • GPIO 35
  • GPIO 36
  • GPIO 39

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

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

  • GPIO 6 (SCK/时钟)
  • 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)

了解如何在 Arduino IDE 中将使用触摸引脚: Arduino IDE 使用 ESP32 触摸引脚

模数转换器 (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)

了解如何使用 ESP32 ADC 引脚:

  • Arduino IDE 使用 ESP32 ADC 引脚
  • MicroPython 使用 ESP32 ADC 引脚

注意:使用 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 ADC 引脚行为
查看源代码

数模转换器 (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)

了解如何使用 RTC GPIO 将 ESP32 从深度睡眠中唤醒: ESP32 Deep Sleep with Arduino IDE and Wake Up Sources

PWM接口

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

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

  • 信号频率
  • 占空比
  • 脉宽调制通道
  • 用于输出信号的 GPIO

了解如何在 Arduino IDE 中使用 ESP32 PWM: Arduino IDE 使用 ESP32 PWM

I2C接口

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

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

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

Wire.begin(SDA, SCL);

使用 Arduino IDE 详细了解 ESP32 的 I2C 通信协议:ESP32 I2C 通信:设置引脚、多总线接口和外设

SPI接口

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

SPI MOSI MISO CLK CS
软件SPI GPIO 23 GPIO 19 GPIO 18 GPIO 5
硬件SPI GPIO 13 GPIO 12 GPIO 14 GPIO 15

使用 Arduino IDE 详细了解 ESP32 的 SPI 通信协议: ESP32 SPI 通信:设置引脚、多个 SPI 总线接口和外围设备

中断

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

了解如何通过 ESP32 使用中断:

  • Arduino IDE 使用 ESP32 中断
  • MicroPython 使用 ESP32 中断

Strapping 引脚

ESP32 芯片具有以下 strapping 引脚:

  • GPIO 0(必须为低电平才能进入启动模式)
  • GPIO 2(启动期间必须浮动或低电平)
  • GPIO 4
  • GPIO 5(启动期间必须为高电平)
  • GPIO 12(启动期间必须为低电平)
  • GPIO 15(启动期间必须为高电平)

这些用于将 ESP32 置于引导加载程序或刷写模式。在大多数内置 USB/Serial 的开发板上,您无需担心这些引脚的状态。该板将引脚置于正确的状态以进行刷写或启动模式。可以在此处找到有关 ESP32 启动模式选择的更多信息。

但是,如果您将外围设备连接到这些引脚,则可能无法尝试上传新代码、使用新固件刷新 ESP32 或重置开发板。如果您有一些外围设备连接到 strapping 引脚,并且在上传代码或刷写 ESP32 时遇到问题,可能是因为这些外围设备阻止了 ESP32 进入正确的模式。阅读引导模式选择文档以指导您朝着正确的方向前进。重置、刷写或启动后,这些引脚按预期工作。

启动时引脚为高电平

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

  • GPIO 1
  • GPIO 3
  • GPIO 5
  • GPIO 6 to GPIO 11 (连接到 ESP32 集成 SPI 闪存 – 不建议使用).
  • GPIO 14
  • GPIO 15

启用引脚(EN)

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

GPIO 电流

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

ESP32 内置霍尔效应传感器

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

 


相关资料

  • 使用 Arduino IDE 学习 ESP32
  • ESP32 开发板入门
  • 20 多个 ESP32 项目和教程
  • ESP32 Web 服务器教程
  • ESP32 与 ESP8266——优点和缺点
标签: ESP32 ESP8266 单片机 电子
最后更新:2023-01-24

陈叨叨

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

取消回复

COPYRIGHT © 2010-2022 C-DD.CN 陈叨叨 ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

辽ICP备16013045号