外设说明
在开展 ESP 系列芯片外设开发前,明确各外设的核心定位、引脚配置规则及引脚功能灵活性(复用/重映射支持),是确保硬件连接正确、功能稳定实现的关键前提。
本文档将针对 ESP32-P4、ESP32-C5、ESP32-C6、ESP32-C2、ESP32-H2、ESP32-S3、ESP32-S2、ESP32-C3、ESP32 型号芯片中已搭载的外设,逐一梳理其基础技术信息,为后续外设的实际驱动开发提供底层技术参考。在这些芯片中,大多数外设在硬件层面都支持引脚重映射功能,仅少数外设由于硬件设计架构或功能逻辑特点存在特殊限制。相关限制会在每个外设的具体说明中单独标注。
文档中提及的相关信息均参考自各芯片的技术规格书,若需进一步了解,可通过 ESP 芯片&模组选型工具 获取芯片技术规格书。
LEDC
LEDC 是脉冲宽度调制(PWM)专用外设,支持多通道 PWM 信号输出,用于需模拟模拟信号的场景,如调节 LED 亮度、控制电机转速等,部分型号,如 ESP32-C5,支持高频输出(最高可达 40 MHz)及高精度占空比配置(最高 20 位分辨率),具体频率和精度可根据应用需求灵活取舍,适配更复杂的模拟控制需求。
外设特性差异
受芯片设计影响,外设在不同芯片下的特性差异如下:
独立 PWM 生成器:即通道数量,通常为 6~8 个,可输出相应数量的独立 PWM 信号。
独立定时器:常为 4 个,用于配置频率和分辨率,可被多个 PWM 通道复用。
占空比精度:最大支持 14~20 位,具体精度取决于芯片型号和使用的分频配置。
备注
PWM 频率与精度存在折中,高频输出可达到数百 kHz 以上,但分辨率会降低;低频输出可实现高精度占空比。
信号线与 IO 口
LEDC 每个通道占用一个 GPIO,用于输出 PWM 信号。
信号线 |
功能说明 |
---|---|
PWM 输出 |
输出 PWM 信号,驱动相关设备 |
管脚分配
LEDC 外设的引脚仅支持通过重映射分配到可用 GPIO。
I2C
I2C 是一种双线串行通信专用外设,支持主从模式数据传输,用于连接各类传感器、存储器、显示器等外部设备,实现数据采集与控制。
外设特性差异
受芯片设计影响,外设在不同芯片下的特性差异如下:
控制器数量:最多两个主系统 I2C,部分芯片可能还搭载一个低功耗(LP)I2C 控制器。
总线时钟频率:支持标准模式 (100 Kbit/s) 和快速模式 (400 Kbit/s),部分芯片最高可达 800 Kbit/s,但受制于 SCL 和 SDA 上拉强度。
信号线与 IO 口
I2C 共两条信号线,每条信号线占用一个 GPIO。
信号线 |
功能说明 |
---|---|
SDA |
数据传输,用于主从设备见的双向通信 |
SCL |
提供通信时钟,由主设备控制 |
管脚分配
I2C 外设的引脚仅支持通过重映射分配到可用 GPIO。
SPI
SPI 是一种高速全双工串行通信专用外设,支持主从模式数据传输,用于连接闪存、显示屏、传感器等外部设备,实现高速数据交换。
外设特性差异
受芯片设计影响,外设在不同芯片下的特性差异如下:
控制器模式:支持存储器模式、通用模式及低功耗模式,其中存储器模式仅供系统使用。
控制器数量:最多四个,其中包含两个存储器 SPI(SPI0/1),部分芯片可能还搭载一个低功耗(LP)SPI 控制器。
总线时钟频率:通用主机模式下支持 48MHz 至 80MHz 频率,通用从机模式下支持 32MHz 至 60MHz 频率,具体取决于芯片型号及信号特性。
信号线与 IO 口
SPI 共有最多 10 条信号线,每条信号线占用一个 GPIO。不同模式下占用的 GPIO 引脚数量如下:1 线模式占用 2 个 GPIO 引脚,2 线模式占用 3 个 GPIO 引脚,4 线模式占用 4 个 GPIO 引脚,8 线模式占用 10 个 GPIO 引脚。
备注
实际可用模式取决于具体 SPI 控制器,部分 SPI 外设不支持 8 线模式,请参考芯片技术规格书确认支持的模式。
信号线 |
功能说明 |
适用模式 |
---|---|---|
MOSI |
主设备发送数据,从设备接收 |
2 线模式、4 线模式;在 1 线模式中与 MISO 复用 |
MISO |
从设备发送数据,主设备接收 |
2 线模式、4 线模式;在 1 线模式中与 MISO 复用 |
SCLK |
提供通信时钟,由主设备控制 |
1、2、4、8 线模式 |
CS |
片选信号,用于选择从设备 |
4、8 线模式 |
IO0 至 IO7 |
8 条并行数据线,每条线传输 1 bit 数据 |
8 线模式 |
管脚分配
SPI 外设的引脚复用和重映射情况取决于 SPI 模式。存储器 SPI (SPI0/1),主要用于连接 Flash 和 PSRAM,默认绑定特定 IO 口;通用 SPI (SPI2 及以上)在大部分芯片上部分信号线既支持复用又可重映射,部分信号线仅支持重映射。
UART
UART(通用异步收发传输器)是一种串行通信外设,支持全双工数据传输,用于连接传感器、调试终端、外部模块等,实现数据收发和控制信号通信。UART 可以在主机与外设之间通过标准串行协议进行异步通信,支持配置波特率、数据位、停止位和校验位。
外设特性差异
受芯片设计影响,外设在不同芯片下的特性差异如下:
控制器数量:多数芯片提供 2 到 6 个 UART 控制器,部分芯片可能还支持低功耗 UART(LP UART)。
波特率范围:多数芯片最高波特率可达 5 MBaud,仅 ESP32-C2 芯片,最高波特率为 2.5 MBaud。实际应用中,波特率可能受 PCB 布线长度、电平匹配、干扰以及外设特性限制,可能需要适当降低波特率以保证通信稳定性。
信号线与 IO 口
UART 根据芯片硬件设计,数据线数量可能为 2 条(TX/RX)或 4 条(TX/RX + RTS/CTS),分别占用 2 个或 4 个 GPIO。
信号线 |
功能说明 |
适用模式 |
---|---|---|
TX |
发送数据,由 UART 发出 |
所有 UART 控制器 |
RX |
接收数据,由 UART 接收 |
所有 UART 控制器 |
RTS |
请求发送,用于硬件流控 |
支持硬件流控的 UART |
CTS |
清除发送,用于硬件流控 |
支持硬件流控的 UART |
管脚分配
对于 UART 外设,所有信号线均支持重映射,其中部分信号线还可通过 IO MUX 进行复用。
ADC
ADC(模数转换器)是将模拟信号转换为数字信号的专用外设,用于读取传感器输出、电压信号或其他模拟信号,实现数字处理与控制。ESP 系列芯片通常内置 12 位分辨率的 ADC,可通过配置采样周期、增益和衰减等参数优化测量范围和精度。
外设特性差异
受芯片设计影响,外设在不同芯片下的特性差异如下:
控制器数量:可为 1 个或 2 个。
通道数量:不同芯片差异较大,ESP32-S3 支持采集 20 个 GPIO 的模拟输入,ESP32-C2 仅支持采集 5 个。
信号线与 IO 口
ADC 每个通道占用一个 GPIO,用于输入模拟信号。
信号线 |
功能说明 |
---|---|
ADCx |
对应通道的模拟输入信号,x 表示 ADC 的通道序号 |
管脚分配
对于 ADC,信号引脚只能通过 IO MUX 进行复用,不支持重映射。
I2S
I2S(Inter-IC Sound)是专用音频串行接口,用于在芯片与音频编解码器、麦克风或音响模块之间传输数字音频数据。I2S 支持标准音频格式(如 PCM),可实现高保真音频采集与输出。
外设特性差异
受芯片设计影响,外设在不同芯片下的特性差异如下:
控制器数量:多数芯片只配置了 1 个 I2S 外设;ESP32-S2/S3 配置了 2 个;ESP32-P4 配置了 3 个;而 ESP32-C2 芯片不搭载 I2S 外设。
时钟频率:BCK 时钟可配置,频率范围一般为 10 kHz~40 MHz;部分芯片支持 APLL 时钟源(如 ESP32-P4),最高可达 240 MHz。
信号线与 IO 口
I2S 外设共 4 条信号线,每条信号线占用一个 GPIO 口。
信号线 |
功能说明 |
---|---|
WS |
字同步信号,用于标识音频帧 |
BCK |
位时钟信号,由主设备提供 |
DATA |
音频数据传输 |
MCLK |
主时钟信号,用于外部音频设备同步 |
管脚分配
I2S 外设的引脚仅支持通过重映射分配到可用 GPIO。
LCD_CAM
LCD_CAM 是 ESP 系列芯片中提供的一个复合型外设,通过同一个硬件模块提供 LCD 接口和 CAM 接口两种功能,共享硬件资源。
LCD 接口功能:用于驱动并行 RGB LCD 显示屏,实现屏幕图像的刷新与显示。
CAM 接口功能:用于连接摄像头,采集图像数据并传输到芯片内部存储器,便于后续处理。
外设特性差异
受芯片设计影响,外设在不同芯片下的特性差异如下:
控制器数量:ESP32-P4 和 ESP32-S3 芯片搭载了 LCD_CAM 外设,ESP32-S2 仅搭载 LCD 接口。
信号线与 IO 口
LCD_CAM 外设的信号线数量取决于选择的数据位宽模式,通常为 14 至 30 条。每条信号线占用一个 GPIO 口。
信号线 |
功能说明 |
---|---|
XCLK |
外部时钟输入 |
SDA (SCCB) |
串行控制数据 |
SCL (SCCB) |
串行控制时钟 |
IO0 至 IO7 |
摄像头数据输出,可以选择数据位宽模式,此处假设为 8 位并行数据 |
VSYNC |
帧同步信号 |
HREF |
行有效信号 |
PCLK |
像素时钟,由摄像头输出 |
管脚分配
LCD_CAM 外设的引脚仅支持通过重映射分配到可用 GPIO。
RMT
RMT 是 ESP 系列芯片提供的远程控制专用外设,用于产生精确时间间隔的信号或捕获输入脉冲,广泛应用于红外遥控、LED 灯带控制、编码信号解析等场景。
外设特性差异
受芯片设计影响,外设在不同芯片下的特性差异如下:
外设支持:多数 ESP 系列芯片提供 4 个 RMT 通道,ESP32-P4 和 ESP32-S3 提供 8 个通道,ESP32-C2 不搭载 RMT 外设。
发射/接收模式:RMT 支持多种发送与接收模式,其中 ESP32-P4 和 ESP32-S3 的部分通道还可通过 GDMA 进行高速数据访问。
信号线与 IO 口
RMT 每个通道占用一个 GPIO,用于发送或接收脉冲信号。
信号线 |
功能说明 |
---|---|
CH0 至 CHx |
RMT 通道信号,根据需求开启对应数量的通道 |
管脚分配
RMT 外设的引脚仅支持通过重映射分配到可用 GPIO。
USB-OTG
USB-OTG(On-The-Go)是 ESP 系列芯片提供的 通用串行总线外设,支持 USB 设备(Device)和主机(Host)模式,可广泛应用于 USB 外设连接、数据传输、外设充电等场景。
外设特性差异
受芯片设计影响,外设在不同芯片下的特性差异如下:
外设支持:仅 ESP32-P4、ESP32-S2 和 ESP32-S3 搭载 USB-OTG 外设。
速度模式:多数芯片仅支持全速和低速模式,ESP32-P4 还额外支持高速 OTG。
通道数量:ESP32-P4 在设备模式下提供 15 个附加端点,主机模式下提供 16 个主机通道;ESP32-S3 在设备模式下提供 6 个附加端点,主机模式下提供 8 个主机通道。
信号线与 IO 口
USB-OTG 外设使用 5 条信号线,每条信号线占用一个 GPIO。物理连接通常通过板载 Micro-USB 或 USB-C 接口实现,与外部设备进行数据传输和电源检测。
信号线 |
功能说明 |
---|---|
USB2 OTG PHY DP |
USB 数据正极(差分信号) |
USB2 OTG PHY DM |
USB 数据负极(差分信号) |
ID |
OTG 模式识别,判断主机/设备角色 |
VBUS |
电源检测或提供,视模式而定 |
GND |
地线 |
管脚分配
USB-OTG 外设的信号差分引脚(DP 和 DM)通过 IO MUX 和其他功能复用,或使用专用引脚,不支持重映射;其余控制信号仅支持重映射。在 ESP32-S3 芯片使用外部 USB PHY 时,所有信号线均通过 IO MUX 复用,不支持重映射。
TWAI
TWAI 是 ESP 系列芯片提供的 CAN 总线兼容通信接口,支持车载和工业总线通信,用于与 CAN 网络上的传感器、控制器及执行器进行数据交换。
外设特性差异
受芯片设计影响,外设在不同芯片下的特性差异如下:
外设数量:多数芯片通常提供 1 个 TWAI 控制器;ESP32-P4 最多可搭载 3 个 TWAI 控制器;少数芯片,例如 ESP32-C2 不搭载 TWAI 外设。
信号线与 IO 口
TWAI 外设使用 2 条信号线,每条信号线占用一个 GPIO。物理连接通常通过板载 CAN 接口(2 针或 DB9 转接板) 与外部 CAN 网络连接,实现总线通信。
信号线 |
功能说明 |
---|---|
TWAI_H(CAN_H) |
CAN 总线高电平信号线,用于差分传输 |
TWAI_L(CAN_L) |
CAN 总线低电平信号线,与 TWAI_H 形成差分信号 |
管脚分配
TWAI 外设的引脚仅支持通过重映射分配到可用 GPIO。
PCNT
PCNT 是 ESP 系列芯片提供的 脉冲计数器,用于对外部信号的脉冲数量进行计数,可用于测量旋转编码器脉冲、按键计数或频率统计等场景。
外设特性差异
受芯片设计影响,外设在不同芯片下的特性差异如下:
外设数量:ESP32-C2 和 ESP32-C3 不搭载 PCNT 外设;其他芯片,例如 ESP32-S3,提供 4 个 PCNT 控制器。
信号线与 IO 口
PCNT 外设使用 2 条信号线,每条信号线占用一个 GPIO。
信号线 |
功能说明 |
---|---|
Pulse 输入 |
用于接收计数脉冲信号 |
Control 输入 |
用于控制计数方向或使能计数 |
管脚分配
PCNT 外设的引脚仅支持通过重映射分配到可用 GPIO。
Touch
Touch 外设是 ESP 系列芯片提供的 电容式触摸传感器接口,可用于检测触摸或接近信号,实现按键替代、滑动手势或电容式按钮应用。
外设特性差异
受芯片设计影响,外设在不同芯片下的特性差异如下:
外设数量:ESP32、ESP32-P4、ESP32-S2 和 ESP32-S3 芯片上提供了 14 个触摸通道。
信号线与 IO 口
Touch 外设每个通道占用一个 GPIO,用于电容式触摸检测。
信号线 |
功能说明 |
---|---|
CH0 至 CHx |
Touch 通道信号,根据需求开启对应数量的通道 |
管脚分配
Touch 外设的引脚仅支持通过 IO MUX 复用,不支持重映射。
USB/JTAG
USB/JTAG 外设是 ESP 系列芯片提供的 调试与下载接口,用于程序下载、调试和芯片烧录。
外设特性差异
受芯片设计影响,外设在不同芯片下的特性差异如下:
外设数量:ESP32-C2 和 ESP32-S2 不搭载该外设,其余芯片均提供 1 个 USB/JTAG 接口。
信号线与 IO 口
USB/JTAG 外设使用 2 条信号线,每条信号线占用一个 GPIO。物理连接通常通过板载 Micro-USB 或 10 到 20 针 JTAG 调试头 连接外部调试器,实现程序烧录、调试和调试器通信。
信号线 |
功能说明 |
---|---|
USB_D+ |
USB 差分数据正 |
USB_D- |
USB 差分数据负 |
管脚分配
USB/JTAG 外设的引脚仅支持通过 IO MUX 复用,不支持重映射。