嵌入式硬件篇---ESP32串口篇
本文详细介绍了乐鑫 ESP32-S3-DevKitC-1 开发板的串口功能。ESP32-S3 芯片集成了三个 UART 控制器(UART0/1/2),支持高达 5 Mbps 的波特率、引脚灵活重映射及自动流量控制等增强功能。开发板通过板载 USB 转串口芯片(如 CP2102N 或 FT232RL)提供 USB 转 UART0 功能,方便程序下载和调试。用户可通过排针访问 UART1 和 UART
文章目录
前言
本文简单介绍了乐鑫 ESP32-S3-DevKitC-1的串口。(三个串口)
乐鑫 ESP32-S3-DevKitC-1 是基于 ESP32-S3 芯片的开发板,专为物联网应用设计,提供了丰富的通信接口,包括多个串口。以下是其串口功能的详细介绍:
一、ESP32-S3 芯片串口基础特性
(一)硬件资源
ESP32-S3 芯片集成了3 个 UART 控制器(UART0/1/2),相比前代 ESP32:
更高性能
更高性能:支持高达5 Mbps的波特率(部分场景可达 8 Mbps)。
引脚灵活性
引脚灵活性:所有 UART 引脚均可通过 GPIO 矩阵重映射(除 JTAG 专用引脚外)。
增强功能
增强功能:支持自动流量控制、红外通信(IrDA)、Modbus 协议等扩展应用。
(二)UART 控制器对比
特性 UART0 UART1 UART2
默认用途 调试日志、下载程序 用户自定义通信 用户自定义通信
默认引脚 TXD0: GPIO43
RXD0: GPIO44 TXD1: GPIO47
RXD1: GPIO46 TXD2: GPIO17
RXD2: GPIO18
流控制引脚 CTS0: GPIO41
RTS0: GPIO40 CTS1: GPIO39
RTS1: GPIO38 CTS2: GPIO37
RTS2: GPIO36
波特率范围 1200 ~ 5000000 bps 1200 ~ 5000000 bps 1200 ~ 5000000 bps
FIFO 深度 128 字节 128 字节 128 字节
二、ESP32-S3-DevKitC-1 开发板串口设计
(一)板载 USB 转串口芯片
开发板集成了CP2102N或FT232RL芯片(具体型号取决于版本),提供:
USB 转 UART0:通过 Type-C 接口连接电脑,用于程序下载和调试日志输出。
自动下载电路:内置 EN/RST 控制电路,上传程序时自动复位 ESP32-S3。
(二)用户可用串口引脚
开发板将部分 UART 引脚引出到排针,方便外接设备:
UART TX 引脚 RX 引脚 CTS 引脚 RTS 引脚 物理位置(排针)
UART0 GPIO43 GPIO44 GPIO41 GPIO40 IO_MUX 区域
UART1 GPIO47 GPIO46 GPIO39 GPIO38 IO_MUX 区域
UART2 GPIO17 GPIO18 GPIO37 GPIO36 IO_MUX 区域
注意:UART0 的 TXD0/RXD0 默认连接到板载 USB 转串口芯片,用户通常无需手动配置。
三、串口编程实践(Arduino 框架)
(一)基础配置示例
#include <HardwareSerial.h>
void setup() {
// 初始化USB串口(UART0),用于调试输出
Serial.begin(115200);
// 初始化UART1,波特率9600,使用默认引脚(GPIO47/TX, GPIO46/RX)
Serial1.begin(9600);
// 初始化UART2,波特率115200,重映射到GPIO19/TX和GPIO20/RX
Serial2.begin(115200, SERIAL_8N1, 19, 20);
}
void loop() {
// 通过UART1接收数据并转发到USB串口
if (Serial1.available()) {
Serial.write(Serial1.read());
}
// 通过USB串口接收数据并转发到UART2
if (Serial.available()) {
Serial2.write(Serial.read());
}
}
(二)高级功能配置
启用硬件流控制
// 初始化UART1,启用CTS/RTS流控制
Serial1.begin(115200, SERIAL_8N1, 47, 46, true);
设置 DMA 传输(适合大数据量通信)
// 使用DMA通道1进行UART2的接收
Serial2.begin(115200, SERIAL_8N1, 17, 18, false, 1);
中断驱动接收
void setup() {
Serial1.begin(9600);
// 注册接收中断回调函数
Serial1.onReceive([]() {
while (Serial1.available()) {
char c = Serial1.read();
// 处理接收到的数据
}
});
}
四、典型应用场景
(一)多设备通信
开发板可同时连接多个串口设备,例如:
UART0:连接电脑,输出调试信息。
UART1:连接蓝牙模块(如 HC-06),实现无线通信。
UART2:连接 GPS 模块(如 NEO-6M),获取定位数据。
(二)工业协议支持
ESP32-S3 的高波特率和稳定性使其适合工业通信:
Modbus RTU:通过 UART 实现主站或从站功能。
RS-485 通信:外接 RS-485 转换器,支持多点通信。
(三)红外遥控(IrDA)
UART 支持红外编解码,可用于:
家电控制:模拟电视、空调遥控器。
数据传输:通过红外接口与其他设备交换数据。
五、注意事项
引脚电平
引脚电平:ESP32-S3 为3.3V 电平,外接 5V 设备时需使用电平转换器(如 TXS0108E)。
引脚复用
引脚复用:部分 GPIO(如 GPIO0/45/46)有特殊功能,使用前需查阅官方引脚映射表。
功耗优化
功耗优化:不使用的串口可通过SerialX.end()关闭,降低功耗。
波特率限制
波特率限制:极高波特率(如 > 2Mbps)需注意信号完整性,建议缩短走线长度并使用屏蔽线。
六、资源链接
官方文档:
ESP32-S3-DevKitC-1 用户指南
ESP32-S3 技术参考手册
开发工具:
ESP-IDF(乐鑫官方 SDK)
Arduino-ESP32(Arduino 框架支持)
通过合理配置 ESP32-S3-DevKitC-1 的串口资源,开发者可高效实现多设备互联、工业控制、智能家居等复杂应用。
、
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐
所有评论(0)