ESP32-S3 控制 串口通信
ESP32-S3 串口通信实验:UART2 回显测试
串口(UART,Universal Asynchronous Receiver/Transmitter)是嵌入式系统中最常用的通信方式之一。
ESP32-S3 除了默认的调试串口 UART0 外,还支持多个硬件串口。
本实验利用 UART2 进行通信,接收来自 PC 端 USB-TTL 模块的数据,并将其原样返回,实现一个“回显”功能。
一、实验目的
- 学习 ESP32-S3 多串口的使用方法
- 掌握 硬件串口初始化及收发数据 的编程方法
- 实现 ESP32-S3 串口回显功能
二、实验器材
- ESP32-S3 开发板
- USB 转 TTL 模块
- 杜邦线若干
三、接线说明
| USB-TTL 模块 | ESP32-S3 IO |
|---|---|
| TXD | IO16 |
| RXD | IO17 |
| GND | GND |
⚠️ 注意:USB 转 TTL 模块电源需切换为 3.3V,避免损坏 ESP32-S3。
四、实验现象
程序下载成功后,打开 串口调试助手,选择正确的串口号,设置 波特率 115200。
- 在串口助手上发送任意字符,ESP32-S3 会通过串口接收,并 原封不动返回,即“回显”功能。
五、完整源代码
/*
* 实验名称:串口通信实验
*
* 接线说明:USB转TTL模块-->ESP32 IO
* (TXD)-->(16)
* (RXD)-->(17)
* (GND)-->(GND)
*
* 实验现象:程序下载成功后,打开串口调试助手,选择好串口、波特率115200参数等,在串口助手上发送字符数据,
* ESP32串口接收后原封不动返回到串口助手显示
*
* 注意事项:USB转TTL模块上将电源切换为3.3V
*
*/
#include "public.h"
//定义全局变量
//定义串口2
HardwareSerial mySerial2(2);
String serialData;
void setup() {
// 串口0配置(默认USB调试串口)
Serial.begin(115200);
// 串口2配置
// void HardwareSerial::begin(unsigned long baud, uint32_t config=SERIAL_8N1, int8_t rxPin=-1, int8_t txPin=-1, bool invert=false, unsigned long timeout_ms = 20000UL);
// baud:串口波特率,该值写0则会进入自动侦测波特率程序;
// config:串口参数,默认SERIAL_8N1为8位数据位、无校验、1位停止位;
// rxPin:接收管脚针脚号;
// txPin:发送管脚针脚号;
// invert:翻转逻辑电平,串口默认高电平为1、低电平为0;
// timeout_ms:自动侦测波特率超时时间,如果超过该时间还未获得波特率就不会使能串口;
mySerial2.begin(115200, SERIAL_8N1, 16, 17);
}
void loop() {
// 串口0接收处理
if (Serial.available()) {
Serial.println("Serial Data Available...");
serialData = Serial.readString();
Serial.print("Received Serial Data: ");
Serial.println(serialData);
}
// 串口2接收处理
if (mySerial2.available()) {
mySerial2.println("Serial2 Data Available...");
serialData = mySerial2.readString();
mySerial2.print("Received Serial2 Data: ");
mySerial2.println(serialData);
}
}
六、程序分析
-
串口初始化
Serial.begin(115200)→ 默认调试串口 UART0mySerial2.begin(115200, SERIAL_8N1, 16, 17)→ 配置 UART2,使用 GPIO16 (RX),GPIO17 (TX),波特率 115200
-
接收与回显
- 使用
Serial.available()或mySerial2.available()判断是否有数据到达 readString()读取数据,存入变量serialDataprintln()将接收到的数据 原样输出 回串口助手
- 使用
-
实验效果
- 串口助手中输入的字符串 → ESP32-S3 接收并立即返回 → 串口助手显示回显数据
七、实验总结
通过本实验,我们学习了 ESP32-S3 的多串口通信,掌握了 UART2 的配置方法 和 数据回显的实现。
在实际开发中,ESP32-S3 的多个硬件串口可以分别用于:
- 与 传感器/模块通信(如 GPS、LoRa 模块)
- 与 上位机通信
- 与 调试端口通信
这使得 ESP32-S3 在物联网项目中非常灵活。

浙公网安备 33010602011771号