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);                 
  }
}

六、程序分析

  1. 串口初始化

    • Serial.begin(115200) → 默认调试串口 UART0
    • mySerial2.begin(115200, SERIAL_8N1, 16, 17) → 配置 UART2,使用 GPIO16 (RX),GPIO17 (TX),波特率 115200
  2. 接收与回显

    • 使用 Serial.available()mySerial2.available() 判断是否有数据到达
    • readString() 读取数据,存入变量 serialData
    • println() 将接收到的数据 原样输出 回串口助手
  3. 实验效果

    • 串口助手中输入的字符串 → ESP32-S3 接收并立即返回 → 串口助手显示回显数据

七、实验总结

通过本实验,我们学习了 ESP32-S3 的多串口通信,掌握了 UART2 的配置方法数据回显的实现
在实际开发中,ESP32-S3 的多个硬件串口可以分别用于:

  • 传感器/模块通信(如 GPS、LoRa 模块)
  • 上位机通信
  • 调试端口通信

这使得 ESP32-S3 在物联网项目中非常灵活。

posted @ 2025-08-16 14:18  jeikerxiao  阅读(301)  评论(0)    收藏  举报