# UART 概述 ## 什么是 UART? UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)是一种广泛应用于数据通信的异步串口通信协议。其工作原理是将传输数据的每个字符逐位传输,使其在硬件资源有限的情况下能够高效完成数据通信。在嵌入式开发与应用程序开发中,UART 是使用频率最高的通信方式之一。 ### 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 数据传输帧包含起始位、数据位、校验位(可选)和停止位: ![](../../../../gximage/gximage40_uart_data_composition.png) --- ## 芯片的 UART 配置详情 ### UART 数量与功能 1. **支持的 UART 数量**:芯片内置 3 路 UART(UART0、UART1、UART2)。 2. **硬件流控**:仅 UART2 支持硬件流控功能。 3. **FIFO 深度**:每路 UART 配备 32 字节 FIFO 缓存,有助于高效的数据收发。 4. **小数分频支持**:分频值支持小数形式,分辨率为 6 位。例如,分频值为 1.5,可通过配置小数部分为 `0.5 × 64 = 32` 来实现。 ### 各 UART 通道的特点 #### 1. UART0 - **默认工作电平**:3V。 - **流控支持**:不支持硬件流控。 - **电平兼容**: - 若需支持 5V 信号传输,应将 P2 和 P3 的 IO 配置为开漏输出(Open Drain),并外接 5V 上拉电阻。 #### 2. UART1 - **默认工作电平**:5V。 - **流控支持**:不支持硬件流控。 - **电平兼容**: - 若需支持 3V 信号传输,应将 P0 和 P1 的 IO 配置为开漏输出,并外接 3V 上拉电阻。 #### 3. UART2 - **默认工作电平**:3V。 - **流控支持**:支持硬件流控功能,是实现高可靠性通信的首选。 --- ## 注意事项与优化建议 1. **波特率设置**:高波特率可以提高数据传输效率,但需要注意硬件的接收能力是否能匹配。例如,在 115200 bps 下,每秒传输 115200 位数据,对处理器和线路的稳定性要求更高。 2. **硬件连接**:特别是在不同电压等级的设备间通信时,应确保电平兼容性,必要时通过 IO 配置和上拉电阻调整电平。 3. **流控使用**:如果通信中需要流量控制功能,应优先选择支持硬件流控的 UART2 通道,避免因信号拥堵导致的数据丢失或错误。 4. **FIFO 缓存优化**:充分利用 32 字节 FIFO,提高数据处理效率,减少中断频率。