ESP32引脚参考详细说明

ESP32引脚参考详细说明


ESP32简介

(包括:ESP32- d0wd、ESP32- d0wdq6、ESP32- d2wd、ESP32- s0wd)集成了Wi-Fi和双模式蓝牙。根据型号差异,ESP32包含一个或两个低功耗Xtensa®32位LX6微处理器(s),最大时钟速度240 MHz(通常是160 MHz)和Xtensa RAM / ROM,本地内存和JTAG接口。
ESP32芯片有48个引脚,具有多种功能。并不是所有的ESP32开发板的引脚都是外露的,有些引脚无法使用。
关于如何使用ESP32 gpio有很多问题。你应该用什么别针?在你的项目中应该避免使用哪些引脚?本文旨在为ESP32 gpio提供一个简单易用的参考指南。

  • ESP-WROOM-32 pinout外观如下图所示。如果你使用ESP32裸芯片来构建自定义板,你可以使用它作为参考:
    在这里插入图片描述
    在这里插入图片描述

注意:不是所有的GPIO都可以在所有的开发板中访问,但是每个特定的GPIO都以相同的方式工作,不管你使用的是哪个开发板。如果你刚刚开始使用ESP32.其他开发板型号:

在这里插入图片描述

在这里插入图片描述

ESP32 外设

  • 18 Analog-to-Digital Converter (ADC) channels
  • 4 SPI interfaces
  • 3 UART interfaces
  • 2 I2C interfaces
  • 16 PWM output channels
  • 2 Digital-to-Analog Converters (DAC)
  • 2 I2S interfaces
  • 10 Capacitive sensing GPIOs

ADC(模拟到数字转换器)和DAC(数字到模拟转换器)特征被分配到特定的静态引脚。然而,您可以决定哪些引脚是UART, I2C, SPI, PWM等-您只需要在代码中分配它们。这是由于ESP32芯片的多路复用特性。

  • 虽然您可以在软件上定义引脚属性,但默认分配的引脚如下图所示(以ESP32 DEVKIT V1 DOIT板36引脚为例-引脚位置可以根据制造商而改变)。
    在这里插入图片描述
    在这里插入图片描述

  • 此外,有些别针具有特定的特性,可以使它们适合或不适合特定的项目。下表显示了哪些引脚是最好的使用作为输入,输出和哪些你需要谨慎。

绿色突出显示的引脚是可以使用的。用黄色突出显示的是可以使用的,但您需要注意,因为它们可能主要在引导时出现意外行为。红色突出显示的引脚不建议用作输入或输出。
在这里插入图片描述

仅作为输入引脚使用

GPIO 34到39是gpio -引脚。这些引脚没有内部上拉或下拉电阻。它们不能用作输出,

GPIO 34
GPIO 35
GPIO 36
GPIO 39
  • ESP-WROOM-32集成SPI flash

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

GPIO 6 (SCK/CLK)
GPIO 7 (SDO/SD0)
GPIO 8 (SDI/SD1)
GPIO 9 (SHD/SD2)
GPIO 10 (SWP/SD3)
GPIO 11 (CSC/CMD)

电容式触摸GPIOs

ESP32内置10个电容式触摸传感器。它们可以感知任何带有电荷的物体的变化,比如人类的皮肤。所以他们可以检测到当用手指触摸gpio时产生的变化。这些引脚可以很容易地集成到电容垫和取代机械按钮。电容触针也可以用来唤醒沉睡的ESP32。

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引脚时,您需要记住这一点。您将得到一个类似于下图所示的行为。
在这里插入图片描述

数字-模拟转换器(DAC)

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

DAC1 (GPIO25)
DAC2 (GPIO26)

RTC GPIOs功能引脚

  • RTC IO_MUX低功耗IO功能

ESP32支持RTC GPIO。当ESP32处于深度睡眠状态时,可以使用RTC低功耗模式下的gpio触发。当Ultra Low Power (ULP)协处理器运行时,这些RTC gpio可用于将ESP32从深度睡眠中唤醒。以下gpio可以作为外部唤醒源。(PS:测试发现,ESP32在低功耗上面表现并不是很优异)
在这里插入图片描述

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)

PWM

ESP32 LED PWM控制器有16个独立的通道,可通过配置产生不同属性的PWM信号。占空比的精度可以配置到16位分辨率,所有可以作为输出的引脚都可以用作PWM引脚(GPIOs 34到39不能产生PWM)。

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

int freq = 5000;//频率
int ledChannel = 0;//通道0
int resolution = 8;//分辨率,1到16位之间的分辨率
ledcSetup(ledChannel, freq, resolution);.

I2C

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

GPIO 21 (SDA)
GPIO 22 (SCL)
  • 如果你想在使用连线库时使用其他引脚,你只需要调用:
Wire.begin(SDA, SCL);

SPI

ESP32有四个SPI外设,分别为SPI0、SPI1、HSPI和VSPI。

  • SPI0是专用于Flash的缓存,ESP32将连接的SPI Flash设备映射到内存中。

  • SPI1和SPI0 使用相同的硬件线,SPI1用于写入flash芯片。

  • HSPI和VSPI可以任意使用。SPI1、HSPI和VSPI共有三条片选线,因此作为SPI主机允许ESP32 至多驱动三个SPI设备。
    在这里插入图片描述

  • 需要注意的是,HSPI和VSPI并不是认为的high-speed SPI 和Very High-speed SPI,这是SPI和HSPI、VSPI是一样的,只不过是换个名字用于区分,SPI相当于SPI0或SPI1,HSPI相当于SPI2,VSPI相当于SPI3。

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

SPI MOSI MISO CLK CS
VSPI GPIO 23 GPIO 19 GPIO18 GPIO 5
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15

如果需要IOMUX提高SPI速率
在这里插入图片描述

中断引脚

所有的引脚都可以作为中断引脚使用。

  • ESP32 Arduino 有以下四种触发方式:
 LOW              低电平触发
 CHANGE           电平变化
 RISING           上升沿触发
 FALLING          下降沿触发
 HIGH             高电平触发 

  • 配置中断

在定义中断函数后,需要在 setup 函数配置中断函数.

// interrupt=中断通道编号,function=中断函数,mode=中断触发模式
attachInterrupt(interrupt, function, mode); 

// pin=中断引脚,function=中断函数,mode=中断触发模式
attachInterrupt(pin, function, mode);

如果在程序运行过程不需要使用外部中断了,可以用中断分离函数来取消这一中断设置:

detachInterrupt(interrupt); 
detachInterrupt(Pin);

启动时的强制引脚

GPIO 0
GPIO 2
GPIO 4
GPIO 5 (must be HIGH during boot)
GPIO 12 (must be LOW during boot)
GPIO 15 (must be HIGH during boot)

这些是用来使ESP32进入引导加载程序或闪烁模式。在大多数内置USB/Serial的开发板上,你不需要担心这些引脚的状态。单板将引脚置于正确的闪光或启动模式状态。更多关于ESP32启动模式选择的信息可以在这里找到。

然而,如果你有外设连接到这些引脚,你可能在尝试上传新代码、用新固件刷新ESP32或重置单板时遇到麻烦。如果有外设连接在捆绑引脚上,导致上传代码或ESP32闪烁出现问题,可能是这些外设导致ESP32无法进入正确模式。请阅读引导模式选择文档,以指导您找到正确的方向。在复位、闪烁或启动后,这些引脚按预期工作。

  • 在启动时,引脚为高电平

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

GPIO 1
GPIO 3
GPIO 5
GPIO 6 to GPIO 11 (connected to the ESP32 integrated SPI flash memory – not recommended to use).
GPIO 14
GPIO 15
  • 使能(EN)引脚是3.3V稳压器的使能引脚。它是被拉上来的,所以连接到地面,使3.3V稳压器失效。例如,您可以使用连接到按钮的引脚来重启ESP32。

内置霍尔传感器

版权声明:本文为CSDN博主「perseverance52」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42880082/article/details/120846959

perseverance52

我还没有学会写个人说明!

暂无评论

相关推荐

Arduino ESP32 ADC模拟量信号读取

Arduino ESP32 ADC模拟量信号读取这篇文章展示如何使用Arduino IDE读取与ESP32模拟输入。模拟读数对于读出可变电阻(如电位器或模拟传感器)的值很有用。 使用ESP32读取模拟输入就像使用analogRead(GPIO

基于8051单片机实现电子时钟+数字秒表设计

概述 电子时钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显 示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许

智能车浅谈——抗干扰技术软件篇

软件抗干扰技术 前面介绍了一些硬件抗干扰技术,不难发现,要做好一个完美的硬件系统是需要花大心思的,而且很多硬件抗扰方案都需要借助一些元器件来实现,这在一定程度上增加了费用,

基于STM32的0.96寸OLED显示屏显示数据

实验要求 理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能: 显示自己的学号和姓名; 显示AHT20的温度和湿度; 上下或左右的滑动显示长字