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)
}
步进电机是将电脉冲信号,转变为角位移或线位移的开环控制电机,又称为脉冲电机。
本文主要讲解WebServer库如何来处理表单请求。
WebServer是非常常用的一个功能,在设备上使用该功能可以直接通过浏览器访问和操作设备。
Arduino-ESP32与ESP-IDF的版本对应表。
Arduino-ESP32提供了多种文件系统解决方案,本文将深入解析SPIFFS、LittleFS和SD卡三种主流存储方案,帮助你做出最佳选择。
ESP32-P4-WIFI6-DEV-KIT是一款微雪(Waveshare)设计的基于 ESP32-P4 的多媒体开发板,并集成 ESP32-C6,支持 Wi-Fi 6 和 BLE 5 无线连接。它提供丰富的人机交互接口,包括 MIPI-CSI (集成图像信号处理器 ISP)、MIPI-DSI、SPI、I2S、I2C、LED PWM、MCPWM、RMT、ADC、UART 和 TWAI 等。
ESP-Hosted 解决方案提供了将 ESP 板用作 Wi-Fi 和 Bluetooth/BLE 连接的通信处理器的方法。
ESP-Hosted 提供了一种将ESP芯片和模组用作通信协处理器的解决方案,该解决方案为主机微处理器或微控制器提供无线连接,使主机能够与其他设备通信。简单来说为网卡方案。
Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789
本文给出了一个ESP32与SPI 接口TFT显示屏接线的详细说明,供大家参考。