前言

本文简单介绍了乐鑫 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 的串口资源,开发者可高效实现多设备互联、工业控制、智能家居等复杂应用。


Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐