ESP32硬件串口接收乱码问题:原因排查与分析
ESP32硬件串口初始化前输出乱码问题探究
测试环境与配置
- 两块ESP32开发板通过串口线背对背连接,使用引脚16作为Serial2的Rx、引脚17作为Serial2的Tx
- 接收端通过Serial0(USB串口)回显Serial2收到的消息,便于PC端监控
- 无其他外接线路,仅保留Rx/Tx引脚连接及USB供电线
- 测试为后续项目做准备:一块板通过Serial2发送命令,另一块执行命令
测试程序
接收端程序
String str; void setup() { Serial.begin(115200); Serial2.begin(115200); } void loop(){ while(Serial2.available()) { str = Serial2.readStringUntil('\n'); Serial.println(str); Serial2.println("OK"); } }
初始发送端程序
void setup() { Serial2.begin(115200); } void loop(){ Serial2.println("Hello world"); delay(4000); }
延迟初始化版本发送端程序
void setup() { delay(10000); Serial2.begin(115200); } void loop(){ Serial2.println("Hello world"); delay(4000); }
问题现象
- 程序正常运行后,消息收发准确,无异常
- 当其中一块板未完成初始化时,接收端Serial0会输出大量随机乱码,例如
K⸮}⸮⸮⸮KK⸮-mo⸮⸮m⸮⸮[K⸮⸮⸮⸮⸮ - 发送端完成初始化并开始发送常规消息后,乱码消失
- 尝试过降低波特率至9600、连接两块板的GND引脚,均无法解决乱码问题
- 发送端在初始化Serial2前添加10秒延迟时,接收端在这10秒内持续输出乱码
补充说明
已通过简单纠错技术解决临时问题,并非寻求解决方案,而是作为串口使用警示分享,核心需求是探究ESP32出现该异常行为的根本原因,已在ESP32 Git仓库提交bug报告。
内容的提问来源于stack exchange,提问作者Raja
相关产品推荐
相关产品推荐

