21.1. UART 概述¶
21.1.1. 什么是 UART?¶
UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)是一种广泛应用于数据通信的异步串口通信协议。其工作原理是将传输数据的每个字符逐位传输,使其在硬件资源有限的情况下能够高效完成数据通信。在嵌入式开发与应用程序开发中,UART 是使用频率最高的通信方式之一。
21.1.1.1. UART 的基本特点¶
UART 通信以简单的双线传输为基础,一根线用于发送数据,另一根线用于接收数据。这种通信方式仅需少量硬件资源,便可实现双向、异步的数据传输。
通信过程中,以下参数需要严格匹配以确保数据的正确收发:
波特率(Baud Rate):通信速率,通常以 bps(每秒比特数)表示,如 4800、9600、115200 等。
起始位:表明数据帧的开始,逻辑电平为
0
。数据位:实际传输的有效数据,通常为 5、6、7、8 或 9 位,常用值为 8 位(一个 ASCII 字符即 8 位)。
奇偶校验位:用于校验数据的正确性,可以选择奇校验或偶校验,也可以不启用。
停止位:标志数据帧的结束,逻辑电平为
1
,一般为 1 位或 2 位。
如下图所示,UART 数据传输帧包含起始位、数据位、校验位(可选)和停止位:
21.1.2. 芯片的 UART 配置详情¶
21.1.2.1. UART 数量与功能¶
支持的 UART 数量:芯片内置 3 路 UART(UART0、UART1、UART2)。
硬件流控:仅 UART2 支持硬件流控功能。
FIFO 深度:每路 UART 配备 32 字节 FIFO 缓存,有助于高效的数据收发。
小数分频支持:分频值支持小数形式,分辨率为 6 位。例如,分频值为 1.5,可通过配置小数部分为
0.5 × 64 = 32
来实现。
21.1.2.2. 各 UART 通道的特点¶
21.1.2.2.1. 1. UART0¶
默认工作电平:3V。
流控支持:不支持硬件流控。
电平兼容:
若需支持 5V 信号传输,应将 P2 和 P3 的 IO 配置为开漏输出(Open Drain),并外接 5V 上拉电阻。
21.1.2.2.2. 2. UART1¶
默认工作电平:5V。
流控支持:不支持硬件流控。
电平兼容:
若需支持 3V 信号传输,应将 P0 和 P1 的 IO 配置为开漏输出,并外接 3V 上拉电阻。
21.1.2.2.3. 3. UART2¶
默认工作电平:3V。
流控支持:支持硬件流控功能,是实现高可靠性通信的首选。
21.1.3. 注意事项与优化建议¶
波特率设置:高波特率可以提高数据传输效率,但需要注意硬件的接收能力是否能匹配。例如,在 115200 bps 下,每秒传输 115200 位数据,对处理器和线路的稳定性要求更高。
硬件连接:特别是在不同电压等级的设备间通信时,应确保电平兼容性,必要时通过 IO 配置和上拉电阻调整电平。
流控使用:如果通信中需要流量控制功能,应优先选择支持硬件流控的 UART2 通道,避免因信号拥堵导致的数据丢失或错误。
FIFO 缓存优化:充分利用 32 字节 FIFO,提高数据处理效率,减少中断频率。