ESP32 架构包括将一些外设配置到任何 GPIO 引脚的功能,由 IO MUX GPIO 管理。从本质上讲,此功能意味着我们可以使用 IO MUX 和 GPIO Matrix 将内部外设路由到不同的物理引脚。

Digtal pads是GPIO引脚,我们看到图上是一个双箭头,代表的是双向,既可以作为输入也可也作为输出。
IO MUX 中每个GPIO管脚有一组寄存器。每个管脚可以配置成GPIO功能(连接GPIO交换矩阵)或者直连功能(旁路GPIO交换矩阵,快速信号如以太网、SDIO、SPI、JTAG、UART等会旁路GPIO交换矩阵以实现更好的高频数字特性。所以高速信号会直接通过IOMUX输入和输出。)
GPIO交换矩阵则可以将部分外设映射到任意的I/O口上
要使用此功能,我们必须注意一些预防措施:
某些 GPIO 仅为 INPUT。
一些外设具有 OUTPUT 信号,必须在能够配置为 OUTPUT 的 GPIO 上使用。
一些外设,主要是高速外设、ADC、DAC、Touch 和 JTAG 使用专用的 GPIOs 引脚。
一些引脚用于连接模块上的闪存 - 这可以防止它们用于任何其他用途 - 如果外围设备被路由到这些引脚之一,设备将无法启动。
ESP32共有34个物理GPIO管脚,序号为:0-19,21-23,25-27,32-39。其中GPIO34-39仅用作输入管脚,其他的既可以作为输入又可以作为输出管脚,GPIO2为启动引脚,最好也好不要接东西。
以下是 ESP32 上的基本外设列表。外设列表可能因每个 ESP32 SoC 系列而异。要查看 ESP32-S2 和 ESP32-C3 上可用的所有外设,请查看每个数据表。
|
Type 类型 |
Function 功能 |
|---|---|
|
ADC |
Dedicated GPIOs 专用 GPIO |
|
DAC |
Dedicated GPIOs 专用 GPIO |
|
Touch Sensor 触摸传感器 |
Dedicated GPIOs 专用 GPIO |
|
JTAG |
Dedicated GPIOs 专用 GPIO |
|
SD/SDIO/MMC HostController |
Dedicated GPIOs 专用 GPIO |
|
Motor PWM 电机 PWM |
Any GPIO 任何 GPIO |
|
SDIO/SPI SlaveController SDIO/SPI 从控制器 |
Dedicated GPIOs 专用 GPIO |
|
UART |
Any GPIO[1] 任何 GPIO[1] |
|
I2C |
Any GPIO 任何 GPIO |
|
I2S |
Any GPIO 任何 GPIO |
|
LED PWM |
Any GPIO 任何 GPIO |
|
RMT |
Any GPIO 任何 GPIO |
|
GPIO |
Any GPIO 任何 GPIO |
|
Parallel QSPI 并行 QSPI |
Dedicated GPIOs 专用 GPIO |
|
EMAC |
Dedicated GPIOs 专用 GPIO |
|
Pulse Counter 脉冲计数器 |
Any GPIO 任何 GPIO |
|
TWAI |
Any GPIO 任何 GPIO |
|
USB |
Dedicated GPIOs 专用 GPIO |
[1] 除了由 bootloader 决定的下载/编程模式。
该表格位于 Espressif 提供的每个数据表中。
在 Arduino Uno 中,我们有由硬件定义的 I2C 引脚,A4 是 SDA,A5 是 SCL。在这种情况下,我们不需要在 Wire.begin(); 函数中设置这些引脚,因为它们已经在 Wire 库中。
void setup()
{
Wire.begin(); // join i2c bus (address optional for master)
}
现在,对于 ESP32,I2C 的默认引脚是 SDA (GPIO21) 和 SCL (GPIO22)。如果您需要更改引脚,我们可以使用不同的引脚作为默认引脚的替代。要更改引脚,我们必须在调用 Wire.begin(); 之前调用 Wire.setPins(int sda, int scl); 该函数。
int sda_pin = 16; // GPIO16 as I2C SDA
int scl_pin = 17; // GPIO17 as I2C SCL
void setup()
{
Wire.setPins(sda_pin, scl_pin); // Set the I2C pins before begin
Wire.begin(); // join i2c bus (address optional for master)
}
新型冠状病毒肺炎(Corona Virus Disease 2019,COVID-19),简称“新冠肺炎”,世界卫生组织命名为“2019冠状病毒病” [1-2] ,是指2019新型冠状病毒感染导致的肺炎。
本小节主要讲解红外接收和遥控器件,以及遥控操作LED。
本小节讲解模拟量传感器使用,旋转电位器,DHT11温湿度传感器和实现自定义传感器类。
本小节讲解Sensor类及派生类、数字量传感器使用和传感器的推荐交互流程。
本小节讲解ESP32内置触摸引脚的用法,
本小节主要介绍按键信号转换、Button类及派生类、和Button交互推荐流程。
本小节主要介绍Ws2812灯珠的使用、对父类进行扩展实现自定义功能,和指针向下强制转换的使用。
本小节主要介绍RGB三色LED的使用,以及多态的具体实现。
ESP32 Arduino Framework是专门针对ESP32开发板的Arduino应用开发框架,为用户开发IOT应用、HMI应用提供一致的开发体验。
ESPConnect是一个基于现代浏览器的管理器,在你需要快速验证、调试、管理文件、检查状态的时候,它能帮你省下大量打开和切换重型工具的时间。
本文介绍两种使用TEA5767收音机模块实现FM收音机的方案,感兴趣的朋友可在此基础上实现更丰富的功能。