文章目录
0. 前言
按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。
在嵌入式系统和计算机硬件设计中,通信接口是连接不同设备、实现信息交换的关键组成部分。其中,UART(Universal Asynchronous Receiver/Transmitter)是一种常用的短距离低速数据传输串行通信协议,具备全双工通信能力,使用TX和RX两线进行数据的发送和接收;被广泛应用于微控制器、计算机与外设之间的数据传输。
本文将深入探讨UART的工作原理、数据格式、关键特性以及应用场景。
1. 同步通讯与异步通讯
同步通信与异步通信是数据通信中两种基本的通信模式,它们在数据传输方式、系统设计复杂度、数据传输效率等方面存在显著差异。下面分别对这两种通信方式进行详细的说明:
1.1 同步通信
同步通信是一种数据传输方式,其中发送方和接收方的时钟信号是同步的,也就是说,双方的时钟频率必须相同或成整数倍关系,这样可以确保数据在正确的时间点被接收和解读。
特征:
- 时钟同步:通信双方需要保持时间上的同步,通常通过一个公共的时钟信号来实现。
- 数据传输效率:由于不需要额外的起始位和停止位,同步通信的数据传输效率通常比异步通信高。
- 数据格式:数据通常以连续的比特流形式传输,不需要每个数据块前后的特殊标记。
- 适用场景:适用于大数据量、高速传输的场合,如高速网络通信、存储设备的读写操作等。
优点:
- 高数据传输速率。
- 减少了数据传输的开销,提高了信道利用率。
缺点:
- 实现较为复杂,需要精确的时钟同步。
- 受到时钟信号质量的影响较大。
1.2 异步通信
异步通信是一种不需要通信双方时钟完全同步的数据传输方式。在异步通信中,数据通常以字符或字节为单位进行传输,每个字符或字节前后都有特殊的起始位和停止位来标识数据的开始和结束。
特征:
- 独立时钟:发送方和接收方可以使用各自的时钟信号,不需要严格的时间同步。
- 数据格式:数据传输是以字符帧的形式,每个字符帧包含起始位、数据位、可能的奇偶校验位和停止位。
- 适用场景:适用于低速或中速的数据传输,如串行通信接口(如RS-232)、简单的点对点通信等。
优点:
- 设计简单,易于实现。
- 对时钟信号的精度要求不高。
缺点:
- 相对于同步通信,数据传输效率较低。
- 每个字符的额外开销导致信道利用率下降。
2. UART的数据格式
UART通信的数据包结构如下:
- 起始位:逻辑低电平,持续时间等于一位时间,用于标识数据帧的开始。
- 数据位:5到8位可配置,表示实际要传输的数据。最低有效位(LSB)或最高有效位(MSB)先发送。
- 奇偶校验位:可选,用于错误检测。可以是无校验、奇校验或偶校验。
- 停止位:1到2位可配置,逻辑高电平,用于标识数据帧的结束。
- 空闲位:逻辑高电平,位于停止位之后,直到下一个起始位出现。
3. 工作原理
在UART通信中,数据以串行方式发送,即一次一位。发送端将并行数据转换为串行数据,并按照上述数据格式进行编码,然后通过单根信号线发送出去。接收端则将接收到的串行数据转换回并行数据。UART内部通常包含移位寄存器、波特率发生器和控制逻辑等组件,以保证数据的准确收发。
3.1 波特率和比特率
波特率(Baud rate)定义了每秒传输的信号变化数,而比特率(Bit rate)则是每秒传输的比特数。在UART中,这两个值通常是相同的,因为每次信号变化只代表一个比特。例如,9600波特意味着每秒传输9600比特。
3.2 UART的关键特性
异步性:不需要外部时钟信号,通过数据格式内的起始位和停止位来同步。
全双工通信:支持同时发送和接收数据。
简单的硬件接口:通常只需要三根线(TX、RX、GND)即可完成基本的通信功能。
可配置性:数据位、停止位和波特率等参数可以根据需要进行调整。
4. UART在自动驾驶汽车中的典型应用
NVIDIA Orin系列模块内建了多个UART接口,这些接口提供了灵活的串行通信能力,用于与其他设备或系统的数据交换。以下是NVIDIA Orin产品中UART通讯的具体应用概述:
4.1 UART特性
- Jetson AGX Orin SOM(系统级模块)配备了4个通用UART端口,这允许用户同时连接多个UART设备或传感器。
- UART控制器支持数据的同步,通过添加起始和停止位形成数据字符,保证了串行数据流的完整性。
- 支持16450和16550兼容模式,默认模式为16450,这提供了与不同设备的兼容性。
- UART的设备时钟最高可达200MHz,支持最大12.5Mbps的波特率。
- UART支持5至8位的字长,可选的奇偶校验位,以及1或2个停止位,增强了数据传输的灵活性和可靠性。
4.2应用示例
- 传感器通信:UART接口可用于连接各种传感器,如温度、湿度、压力传感器,以及GPS模块,实现实时数据采集和传输。
- 调试与控制:UART常用于嵌入式系统的调试,通过串口输出日志信息或接收命令进行设备控制。
- 设备配置:UART可用于配置和更新其他设备的参数,如无线模块的设置。
- 人机交互:通过UART连接终端或串口转USB适配器,实现用户界面的输入输出。
- 扩展通信:UART还可以用于与其他嵌入式系统或微控制器之间的通信,作为系统间数据交换的桥梁。
5. 结语
UART作为一种成熟的通信协议,因其简单性和灵活性,在多种应用场景中发挥着重要作用。了解其工作原理和技术细节对于从事硬件设计和嵌入式开发的专业人士来说至关重要。随着技术的发展,虽然高速通信协议(如USB、Ethernet)日益普及,但UART以其低成本和可靠性,在许多领域仍然不可替代。