21.1. UART 概述

21.1.1. 什么是 UART?

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)是一种广泛应用于数据通信的异步串口通信协议。其工作原理是将传输数据的每个字符逐位传输,使其在硬件资源有限的情况下能够高效完成数据通信。在嵌入式开发与应用程序开发中,UART 是使用频率最高的通信方式之一。

21.1.1.1. UART 的基本特点

UART 通信以简单的双线传输为基础,一根线用于发送数据,另一根线用于接收数据。这种通信方式仅需少量硬件资源,便可实现双向、异步的数据传输。

通信过程中,以下参数需要严格匹配以确保数据的正确收发:

  1. 波特率(Baud Rate):通信速率,通常以 bps(每秒比特数)表示,如 4800、9600、115200 等。

  2. 起始位:表明数据帧的开始,逻辑电平为 0

  3. 数据位:实际传输的有效数据,通常为 5、6、7、8 或 9 位,常用值为 8 位(一个 ASCII 字符即 8 位)。

  4. 奇偶校验位:用于校验数据的正确性,可以选择奇校验或偶校验,也可以不启用。

  5. 停止位:标志数据帧的结束,逻辑电平为 1,一般为 1 位或 2 位。

如下图所示,UART 数据传输帧包含起始位、数据位、校验位(可选)和停止位:


21.1.2. 芯片的 UART 配置详情

21.1.2.1. UART 数量与功能

  1. 支持的 UART 数量:芯片内置 3 路 UART(UART0、UART1、UART2)。

  2. 硬件流控:仅 UART2 支持硬件流控功能。

  3. FIFO 深度:每路 UART 配备 32 字节 FIFO 缓存,有助于高效的数据收发。

  4. 小数分频支持:分频值支持小数形式,分辨率为 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. 注意事项与优化建议

  1. 波特率设置:高波特率可以提高数据传输效率,但需要注意硬件的接收能力是否能匹配。例如,在 115200 bps 下,每秒传输 115200 位数据,对处理器和线路的稳定性要求更高。

  2. 硬件连接:特别是在不同电压等级的设备间通信时,应确保电平兼容性,必要时通过 IO 配置和上拉电阻调整电平。

  3. 流控使用:如果通信中需要流量控制功能,应优先选择支持硬件流控的 UART2 通道,避免因信号拥堵导致的数据丢失或错误。

  4. FIFO 缓存优化:充分利用 32 字节 FIFO,提高数据处理效率,减少中断频率。