用Arduino玩ESP32(05):GPIO使用

1. Strapping引脚

ESP32 共有5 个Strapping 管脚。

  • MTDI/GPIO12:内部下拉
  • GPIO0:内部上拉
  • GPIO2:内部下拉
  • MTDO/GPIO15:内部上拉
  • GPIO5:内部上拉

2. 专用spi flash引脚

  • GPIO6
  • GPIO7
  • GPIO8
  • GPIO9
  • GPIO10
  • GPIO11
    一般在模组内部用于外接SPI flash。

3. 只具有输入功能的引脚

  • GPIO34
  • GPIO35
  • GPIO36
  • GPIO37
  • GPIO38
  • GPIO39
    以上管脚只具有输入功能,没有上拉下拉选项

待定(nodemcu-32s中可以用)

  • GPIO16
  • GPIO17
//实际剩余引脚:
日常可用
32  ADC4    TOUCH9
33  ADC5    TOUCH8
25  ADC18  DAC1
26  ADC19  DAC2
27  ADC17  TOUCH7
14  ADC16  TOUCH6
13  ADC14  TOUCH4
04  ADC10  TOUCH0
左侧(专用)
23   VSPI     MOSI
22   SCL
21   SDA
19   VSPI     MISO
18   VSPI     SCK

以下内容转自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引脚时,请记住这一点。您将获得类似于下图所示的行为。

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)

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

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还具有内置霍尔效应传感器,可检测其周围磁场的变化。

你可能感兴趣的:(用Arduino玩ESP32(05):GPIO使用)