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)
} 
            RISC-V(发音为“risk-five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件。
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显示屏接线的详细说明,供大家参考。
本文讲解如何在Micropython环境下使用ESP32的ESPNow功能进行数据传输。
ESP-Dongle 是一款基于 ESP32-S3 芯片开发的多功能 USB Device 解决方案。它不仅外形小巧,功能齐全,更集成了无线 U 盘、SD 卡读取以及 USB 无线网卡等多项功能。
 
            ESP32 系列芯片可以利用 CSI 数据实现动作检测和存在检测。无论是自动调节灯光、风扇,还是节能控制,CSI 技术为智能家居带来了新的可能性。随着 CSI 技术的发展,未来的智能家居将能够更精确地感知和响应我们的行为,实现更高效、更人性化的控制。
