ESP32开发板引脚介绍【附有引脚使用实例】

简介: ESP32开发板引脚介绍👨‍🏫内容1:背景👨‍⚖️内容2:限制类引脚👨‍💻内容3:ESP32 周边设备🍉文末备注 👨‍🏫。

ESP32开发板引脚介绍

🔮🔮🔮🔮🔮相关文章🔮🔮🔮🔮🔮




@TOC



👨‍🏫内容1:背景


ESP32-WROOM-32
👉ESP32 是一款由 Espressif Systems 开发的低功耗、高性能、可扩展的嵌入式微控制器,可用于构建各种物联网 (IoT) 应用。ESP32 芯片基于 ARM Cortex-M 内核,具有 32 位地址空间,支持 Wi-Fi、蓝牙和其他无线连接,以及多种外设接口,如 GPIO、定时器、PWM、串口等。



👨‍⚖️内容2:限制类引脚


1️⃣Strapping 引脚:
![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/8318b5123f464040be9c73ea11aee98e.png#pic_left#pic_left =300x160)
👉在硬件上要注意使用外接模块时不能将GPIO12拉高,否则将导致ESP32启动异常。还有一些GPIO在启动或重置时其状态更改为高或者输出PWM信号,在使用时需要注意。


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


![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/b0f1aee25fc14b2aa1e2bd115bd4f126.png#pic_left#pic_left =300x180)


3️⃣仅输入引脚:
🎈GPIO 34 到 39 是 GPI – 仅输入引脚。这些引脚没有内部上拉或下拉电阻。它们不能用作输出,因此只能将这些引脚用作输入:⬇️
![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/d242694c9c5247e3a82327c5cdd856e7.png#pic_left#pic_left =200x160)
➡️这些引脚都是ESP32用于引导加载程序或者烧录模式/在大多数内置USB/Serial的开发板上,不需要担心这些引脚的状态,开发板会把这些引脚设置为正确的状态,以便使用烧录或启动模式。
➡️但是,如果你有外设连接到这些引脚上,当你在尝试上传新代码、用新固件烧写ESP32或重置电路板时可能会遇到麻烦,例如不明原因的错误和失败。可能是因为这些外设阻止ESP32进入正确的模式。
➡️所以以上的引脚 不建议在项目中使用。


👨‍💻内容3:ESP32 周边设备


🎯ESP32 周边设备:


1️⃣18 个模数转换器 (ADC) 通道
👉ESP32 有 18 x 12 位 ADC 输入通道(而ESP8266 只有 1x 10 位 ADC)。这些是可用作 ADC 和相应通道的 GPIO:
👉与某些数字外设(PWM、软件 SPI 和 I2C)不同,ADC 引脚是固定的,即您必须使用具有 ADC 功能的预定义 GPIO 引脚,并且不能在软件中对其进行配置。但是,您必须了解一些限制。
👉尽管 ESP32 有 18 个通道的 ADC,但并非所有 ADC 引脚都可供用户使用。在 8 个 ADC1 通道中,只有 6 个可用(ACD1_CH0 和 ACD1_CH3 到 ACD1_CH7),而 ADC1_CH1 和 ADC1_CH2 不可用(即使引脚在 ESP32 开发板中没有暴露)。
👀来到ADC2,就有些复杂了。当您使用 ESP32 的 Wi-Fi 时,Wi-Fi Driver 使用 ADC2 Peripheral。因此,只有在未启动 Wi-Fi 驱动程序时才能使用 ADC2。
🤷‍♂️即使您正在使用 ADC2(假设未使用 Wi-Fi),所有引脚也并非随时可用,因为与 ADC2 相关的一些引脚用于其他重要目的(引导绑定)。



🙇ADC 输入通道具有 12 位分辨率。这意味着您可以获得范围从 0 到 4095 的模拟读数,其中 0 对应于 0V,4095 对应于 3.3V。您还可以在代码和 ADC 范围上设置通道的分辨率。
🎃ESP32 ADC 引脚没有线性行为。您可能无法区分 0 和 0.1V,或 3.2 和 3.3V。使用 ADC 引脚时需要牢记这一点。您将获得类似于下图所示的行为。


🏆使用实例🏆
🏅这里插入一个我在使用时犯过的一个问题
🎳当时我使用了A16引脚【ACD2组】实现了气味传感器的数据反应
⛳相关的代码很简单,当我收集的代码融入到MQTT发布的代码中时,有关的收集数据则一直显示为0
🏓其实这就是因为ACD2组在启动WIFI时产生了冲突,换成ACD1组就可以了


2️⃣4组SPI接口
🎽默认情况下,可以用的SPI的引脚映射是:⬇️

🏉SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协议,即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率较高的场合。
🏉芯片的管脚上只占用四根线。
➡️MISO: 主器件数据输出,从器件数据输入。
➡️MOSI:主器件数据输入,从器件数据输出。
➡️SCK: 时钟信号,由主设备控制发出。
➡️NSS(CS): 从设备选择信号,由主设备控制。当NSS为低电平则选中从器件。

🤿ESP32集成了4组SPI外设。
➡️SPI0和SPI1在内部用于访问ESP32所连接的闪存。两个控制器共享相同的SPI总线信号,并且有一个仲裁器来确定哪个可以访问该总线。
➡️SPI2和SPI3是通用SPI控制器,有时分别称为HSPI和VSPI。它们向用户开放。SPI2和SPI3具有独立的总线信号,分别具有相同的名称。每条总线具有3条CS线,最多能控制6个SPI从设备。
🥊需要注意的是,HSPI和VSPI并不是网友们认为的high-speed SPI 和Very High-speed SPI,这是SPI和HSPI、VSPI是一样的,只不过是换个名字用于区分,SPI相当于SPI0或SPI1,HSPI相当于SPI2,VSPI相当于SPI3。


3️⃣I2C 通讯协议
🥏ESP32默认的I2C引脚为:
➡️GPIO 21 (SDA)
➡️GPIO 22 (SCL)
其实在ESP32中任何引脚都可以定义为SDA或SCL,但不到逼不得已不推荐这么做。
可在Arduino IDE 中使用以下语句配置其它引脚为SDA或SCL⬇️
Wire.begin(SDA, SCL);


4️⃣PWM
🎠ESP32 PWM 控制器主要设计用于控制 LED 的强度,但它也可用于生成其他目的的 PWM 信号。它有16个通道,可以产生独立的PWM波形。
🔅ESP32 PWM 控制器有 8 个高速通道和 8 个低速通道,我们总共有 16 个通道。它们根据速度分为两组。每组有 4 个定时器/8 个通道。这意味着每两个通道共享同一个定时器。因此,我们无法独立控制每对通道的 PWM 频率。⬇️



🚸所有可以作为输出的引脚都可以用作 PWM 引脚(GPIO 34 到 39 不能产生 PWM)。
要设置 PWM 信号,您需要在代码中定义这些参数:
➡️信号的频率
➡️占空比
➡️脉宽调制通道
➡️要输出信号的 GPIO


5️⃣电容式触控 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)


6️⃣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)


7️⃣其他
![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/34fbae326d204859a4f32caf64541acc.png#pic_left#pic_left =500x220)
![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/501d02c9c19a43399ad56960ae6295b5.png#pic_left#pic_left =500x260)


🍉文末备注 👨‍🏫


🎃备注
🐱本文有关引脚的介绍主要是引用了凌顺实验室的ESP32引脚介绍文章
🐶大家想要了解更多可以点下下方链接跳转观看
➡️ESP32引脚介绍


相关文章
|
监控 IDE 开发工具
【esp32c3配置arduino IDE教程】
设计用户操作界面,该设备具备简单易用的操作界面,外加显示屏SSD1306和旋转编码器进行显示和控制,用户后期可进行二次开发WiFi或蓝牙连接电脑或手机监控。
4592 0
|
算法 Ubuntu 物联网
ESP32-C3入门教程 网络 篇(二、 Wi-Fi 配网 — Smart_config方式 和 BlueIF方式)
经过上一篇的WiFI入门篇,我们知道了WiFi初始化方式 和学会了WiFi的几种工作方式, 在实际应用中,环境复杂多变,在固件中输入SSID 的方式太不通用了, 所以肯定是需要学习一下如何在不同的环境中联网,就是所谓的配网。 ESP32-C3的配网方式有多种,本文主要说明测试 Smart方式 和 BlueIF方式。
3711 0
ESP32-C3入门教程 网络 篇(二、 Wi-Fi 配网 — Smart_config方式 和 BlueIF方式)
|
Ubuntu 测试技术 开发工具
ESP32-C3入门教程 基础篇(一、ADC采样)
经过前面的折腾,设计好了自己的测试开发板 搭建好了开发环境, 然后正式开始进行功能测试了,测试顺序先从简单的开始吧,一步一步来
2561 1
ESP32-C3入门教程 基础篇(一、ADC采样)
|
搜索推荐 定位技术 API
校园导航系统解决方案:智慧校园精准指引,提升校园服务质量
本文面向学校、相关技术人员以及对校园导航系统感兴趣的读者,提供校园导航系统的核心技术与功能的解析,包括高精度定位、三维地图构建及 AR/VR 集成等,推动智慧校园建设。如需校园导航系统解决方案欢迎私信获取,如有项目合作及技术交流欢迎私信作者哦~
914 2
校园导航系统解决方案:智慧校园精准指引,提升校园服务质量
|
存储
在Arduino中使用数学库
在Arduino中使用数学库,可以通过包含`<math.h>`头文件来访问一系列数学函数,如sin、cos、tan等。使用这些函数前需确保已正确引入库,并了解各函数参数与返回值类型,以便进行精准的数学运算。
|
存储 数据采集 IDE
利用ESP32-C3将TF卡内容变成U盘进行读取
ESP32-C3是一款高性价比的微控制器,具备WiFi和蓝牙功能,广泛应用于物联网(IoT)项目中。除了常见的无线通信功能外,ESP32-C3还可以用来模拟U盘读取TF卡内容。本文将介绍如何通过ESP32-C3实现这一功能,让你的设备像U盘一样读取TF卡里的数据。
2088 1
|
人工智能 自然语言处理 测试技术
谷歌AI 多模态 Gemini 2.5 Pro的国内使用教程
在人工智能(AI)的星辰大海中,谷歌再次投下一枚重磅炸弹 💣!他们倾注心血打造的智慧结晶
5889 0
|
UED 开发工具 iOS开发
Uno Platform大揭秘:如何在你的跨平台应用中,巧妙融入第三方库与服务,一键解锁无限可能,让应用功能飙升,用户体验爆棚!
【8月更文挑战第31天】Uno Platform 让开发者能用同一代码库打造 Windows、iOS、Android、macOS 甚至 Web 的多彩应用。本文介绍如何在 Uno Platform 中集成第三方库和服务,如 Mapbox 或 Google Maps 的 .NET SDK,以增强应用功能并提升用户体验。通过 NuGet 安装所需库,并在 XAML 页面中添加相应控件,即可实现地图等功能。尽管 Uno 平台减少了平台差异,但仍需关注版本兼容性和性能问题,确保应用在多平台上表现一致。掌握正确方法,让跨平台应用更出色。
373 0
|
传感器 网络协议 IDE
【基于Arduino IDE平台开发ESP8266连接巴法云】
【基于Arduino IDE平台开发ESP8266连接巴法云】
4523 0

热门文章

最新文章