62人参与 • 2024-08-06 • 单片机
esp32 芯片有 48 个引脚,具有多种功能。并不是所有的 esp32 开发板的管脚都是外露的,有些管脚是不能用的。
关于如何使用 esp32 gpio 的问题很多。你应该使用什么引脚?您应该避免在项目中使用哪些引脚?这篇文章旨在成为 esp32 gpio 的简单易懂的参考指南。
下图说明了 esp-wroom-32 的引脚排列。如果您使用esp32 裸芯片构建定制板,您可以将其用作参考:
esp32 外设包括:
adc(模数转换器)和 dac(数模转换器)功能分配给特定的静态引脚。但是,您可以决定哪些引脚是 uart、i2c、spi、pwm 等——您只需在代码中分配它们即可。由于 esp32 芯片的多路复用功能,这是可能的。
虽然您可以在软件上定义管脚属性,但默认分配的管脚如下图所示(这是esp32 devkit v1 doit 板的 36 管脚示例- 管脚位置可能会因制造商而异)。
此外,还有一些具有特定功能的管脚,使它们适合或不适合特定项目。下表显示了哪些引脚最适合用作输入、输出以及您需要注意哪些引脚。
以绿色突出显示的引脚可以使用。黄色高亮的是可以使用的,但是你需要注意,因为它们可能主要在启动时有意想不到的行为。不建议将以红色突出显示的引脚用作输入或输出。
gpio | input | output | 说明 |
0 | pulled up | ok | 开机时输出 pwm 信号,必须为 low 才能进入闪烁模式 |
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——仅输入引脚。这些引脚没有内部上拉或下拉电阻。它们不能用作输出,因此只能将这些引脚用作输入:
部分 esp32 开发板暴露了 gpio 6 到 gpio 11。但是,这些引脚连接到 esp-wroom-32 芯片上的集成 spi 闪存,不建议用于其他用途。所以,不要在你的项目中使用这些引脚:
esp32 有 10 个内部电容式触摸传感器。它们可以感知任何带电荷的物体的变化,比如人体皮肤。因此,他们可以检测到用手指触摸 gpio 时引起的变化。这些引脚可以很容易地集成到电容垫中并取代机械按钮。电容式触摸引脚也可用于将esp32 从深度睡眠中唤醒
这些内部触摸传感器连接到这些 gpio:
esp32 有 18 x 12 位 adc 输入通道(而esp8266 只有 1x 10 位 adc)。这些是可用作 adc 和相应通道的 gpio:
了解如何使用 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 上有 2 x 8 位 dac 通道,用于将数字信号转换为模拟电压信号输出。这些是 dac 通道:
esp32 支持 rtc gpio。当 esp32 处于深度睡眠时,可以使用路由到 rtc 低功耗子系统的 gpio。当超低功耗 (ulp) 协处理器运行时,这些 rtc gpio 可用于将 esp32 从深度睡眠中唤醒。以下 gpio 可用作外部唤醒源。
esp32 led pwm 控制器有 16 个独立的通道,可以配置为产生不同属性的 pwm 信号。所有可以作为输出的引脚都可以用作 pwm 引脚(gpio 34 到 39 不能生成 pwm)。
要设置 pwm 信号,您需要在代码中定义这些参数:
esp32 有两个 i2c 通道,任何引脚都可以设置为 sda 或 scl。将 esp32 与 arduino ide 一起使用时,默认的 i2c 引脚为:
如果在使用线库的时候还想使用其他管脚,只需要调用:
默认情况下,spi 的引脚映射为:
所有 gpio 都可以配置为中断。
一些 gpio 在启动或复位时将其状态更改为高电平或输出 pwm 信号。这意味着如果您将输出连接到这些 gpio,您可能会在 esp32 重置或启动时得到意想不到的结果。
启用 (en) 是 3.3v 稳压器的启用引脚。它被拉高,所以接地以禁用 3.3v 稳压器。这意味着您可以使用连接到按钮的此引脚来重启 esp32,例如。
根据 esp32 数据表中的“推荐工作条件”部分,每个 gpio 消耗的绝对最大电流为 40ma。
esp32 还具有内置霍尔效应传感器,可检测周围磁场的变化。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论