跳到主要内容

第 05 节 测试 UART Type-C 接口

UART 是一种通用异步收发传输器,支持全双工的串行传输,在 ESP32-S3 芯片中有三个 UART 控制器可供使用,并且兼容不同的 UART 设备。在本产品 ESP32-S3-Touch-LCD-7 的板子上集成有两个 UART 的接口:UART1 接口UART2 接口,使用的都是 ESP32-S3 的 UART0 控制器(IO43、IO44),但两者存在如下区别(需结合原理图理解):

  • UART2 接口是直连 ESP32-S3 UART0 ,且采用接线座引出,方便使用杜邦线连接其他模块
  • UART1 接口是通过 CH343 转接引出,实现 USB 转 TTL 功能,且通过 Type-C 接口引出
  • 使用时可以通过拨码开关(图中绿色框位置)来切换这两个接口
ESP32-S3-Touch-LCD-7 UART demo 1

在本测试代码中,我们将拨码开关调至 UART1 丝印处,用于测试 UART1 Type-C 接口。

硬件连接

为了将对应的代码上传到 ESP32-S3,需要用 Type-C 转 Type-A 的线将 ESP32-S3-Touch-LCD-7 的 USB 口接到电脑的 USB 口:

ESP32-S3-Touch-LCD-7 UART demo 3

示例代码

请先从以下地址下载例程包:ESP32-S3-Touch-LCD-7 示例程序 (如果先前已经下载,直接打开对应文件夹即可) 将例程压缩包解压之后,打开对应的 05_UART_Test 文件夹

ESP32-S3-Touch-LCD-7 UART demo 2

打开 UART_Test.ino 代码

ESP32-S3-Touch-LCD-7 UART demo 3

选择开发板型号 Waveshare ESP32-S3-Touch-LCD-7 与端口:

ESP32-S3-Touch-LCD-7 UART demo 4

接着并设置开发板参数,注意 USB CDC On Boot 这个位置要选择 Disabled, 这样串口打印的信息才能从 UART 口输出。

ESP32-S3-Touch-LCD-7 UART demo 5

然后点击箭头按钮进行程序上传,等待上传完成即可。

ESP32-S3-Touch-LCD-7 UART demo 6

运行结果

将 ESP32-S3-Touch-LCD-7 上的 USB 口拔掉,接到 UART1 的 Type-C 接口上,使得 UART1 与电脑的 USB 口连接。

ESP32-S3-Touch-LCD-7 UART demo 7

打开 SSCOM 串口通信工具,按照下面进行设置,对 ESP32-S3-Touch-LCD-7 的串口发送数据,即可收到相同的数据回来。从而完成了一个简单的串口回传功能。

ESP32-S3-Touch-LCD-7 UART demo 8

代码回顾

    #define UART Serial

Serial 起一个别名 UART ,提高代码可读性,方便后期修改,如果要换到 Serial1/Serial2,只需改这一行)

    void setup() {
UART.begin(115200);
while (!UART) {
delay(10); // Wait for initialization to succeed
}

启动串口通信,设置波特率 115200 while (!UART) 用于等待串口就绪,在某些平台上,串口初始化需要时间,这个循环确保串口完全准备好后才继续执行。

    void loop() {
if (UART.available()) {
UART.write(UART.read());
}

使用 UART.available() 检查接收缓冲区中是否有数据,如果有数据,进入 if 语句: UART.read() 从缓冲区读取一个字节, UART.write() 将读取的字节发送回去,这就是经典的"串口回显"功能。