首页
学习
活动
专区
圈层
工具
发布
44 篇文章
1
[PyUserInput]模拟鼠标和键盘模拟
2
银行排队模拟(离散事件模拟)
3
Linux网络模拟
4
Linux TC(Traffic Control)作为损伤仪的基础配置和使用
5
深入学习Docker网络(看这篇就完全够了)
6
【鸿蒙 HarmonyOS】鸿蒙手机模拟器 ( 鸿蒙远程模拟器 | 鸿蒙远程模拟器运行手机应用 )
7
探索嵌入式应用框架(EAF)
8
多 OS 混合部署框架
9
嵌入式系统架构浅谈:编程设计模式 (一)---访问硬件的设计模式
10
事件驱动和消息驱动
11
原来 8 张图,就能学废 Reactor 和 Proactor
12
Linux df -h 命令hang住没有反应
13
kafka消费组信息采集异常(hang住)排查
14
ext4 io hung模拟脚本
15
解决 umount 命令卸载磁盘时busy/卡死的问题
16
程序卡死在void HardFault_Handler的解决办法
17
执行sed命令卡死CPU消耗100%一例分析
18
记一次因Redis使用不当导致应用卡死过程
19
字节对齐不慎引发的挂死问题
20
解引用NULL为什么会导致程序挂死?
21
记64位地址截断引发的挂死问题
22
websocket 在线工具_websocket添加请求头
23
【嵌入式Linux应用开发】SquareLine Studio与LVGL模拟器
24
详解Handler机制中消息队列的出队逻辑
25
Android UpdateEngine模块流程(含序列图)
26
物联网时代的嵌入式开发平台
27
400+条实用C/C++框架、库、工具整理 ,你能想到的都在这里了
28
ESP32芯片IO解读
29
M5Stack在ubuntu上进行开发编译
30
【抽象那些事】不完整的抽象&多方面抽象&未用的抽象&重复的抽象
31
H264,你不知道的小技巧
32
linux 创建虚拟块设备,制作文件系统并挂载,用于测试lustre
33
基于linux开发uvc摄像头_uvc协议扩展
34
清晰讲解LSB、MSB和大小端模式及网络字节序
35
在树莓派中使用 MicroPython 接入 MQTT
36
MicroPython 玩转硬件系列1:环境搭建
37
嵌入式系统架构浅谈:编程设计模式 (二)---嵌入并发和资源管理的设计模式
38
嵌入式软件架构设计之分层设计
39
IC之路(一)Proteus-Arduino仿真环境搭建
40
图像处理基础(六)-libjpeg常用算法
41
OpenCV双目标定
42
L-K光流推导及OpenCV代码实现
43
NDI Webcam Input工具,那些你不知道的知识!
44
使用QEMU chroot进行固件本地调试
清单首页其它文章详情

ESP32芯片IO解读

我们使用一个开发板最重要得就是知道引脚得定义.所以我们有必要查到精确的资料,这篇文章很有用.也是我日后要查找得文章.

首先我们要明确一点,其实板子那么大,有用的就是这个核心的芯片

这个芯片上面的引脚引出来做相应的功能.

ESP32芯片具有48个功能齐全的引脚。并非所有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芯片具有多路复用功能,因此这是可能的。

这个是36脚的,国外卖的是这个板子.'

国内是30脚的

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

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

ok是好

红的

绿色的

黄色就是疯狂暗示的引脚,懂了吧

仅输入引脚

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

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

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

某些ESP32开发板公开了GPIO 6至GPIO 11。但是,这些引脚连接到ESP-WROOM-32芯片上的集成SPI闪存,不建议用于其他用途。因此,请勿在您的项目中使用这些引脚:

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

模数转换器(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引脚时,请记住这一点。您将获得类似于下图所示的行为。

代码语言:javascript
复制
https://github.com/espressif/arduino-esp32/issues/92

数模转换器(DAC)

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

  • DAC1(GPIO25)
  • DAC2(GPIO26)

脉宽调制

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

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

  • 信号频率
  • 占空比;
  • PWM通道
  • 您要在其中输出信号的GPIO。

I2C

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

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

如果要使用其他引脚,则在使用线库时,只需调用:

代码语言:javascript
复制
Wire.begin(SDA, 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

ESP32芯片具有以下strapping pins:

  • GPIO 0
  • GPIO 2
  • GPIO 4
  • GPIO 5(启动期间必须为高电平)
  • GPIO 12(启动期间必须为LOW)
  • GPIO 15(引导期间必须为高电平

我实在不会翻译这个了....

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)

开机时为高电平

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

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

启用(EN)

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

GPIO电流消耗

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

ESP32内置霍尔效应传感器

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

下一篇
举报
领券