UART串口通信
一、概述
UART ( universal asynchronous receiver-transmitter )是一种采用全双工异步串行通信方式的通用异步(发送方和接收方可以独立地发送数据)收发传输器。它在发送数据时将并行数据转换成串行数据来传输,在接收数据时将接收到的串行数据转换成并行数据。
数据通常都是以并行的形式存储在设备的寄存器当中的,UART又是一种串行通信协议,所以就需要转化为串行数据进行传输,储存的时候再转换为并行。
二、电气连接
UART至少需要两根数据线,即发送线(TX)和接收线(RX)。TX用于发送数据,RX用于接收数据,将通信的两台设备的UART数据线,RXD和TXD交叉连接,然后配置两台设备的波特率、数据位、停止位、检验位要保持一致。
因为UART是串行读取数据的,所以我们就需要设置合适的波特率。
三、波特率
波特率是指每秒钟传输的比特数,是通信双方事先约定好的。通信的双方必须使用相同的波特率才能正常通信。单位是bps(位/秒),常用的波特率有9600、19200、38400、57600以及115200等。如波特率为9600bps的计数器需要计数(8/9600/时钟周期)次才可以传输1Byte数据,也可以理解为波特率9600,意思也就是每秒发送9600个码元,每个码元的长度是1,1/9600=104us(微妙)。
空闲:线路上为高电平,即逻辑值为1。
起始位:逻辑值为0,表示字符帧的开始。
数据:先发低位再发高位。
校验位:奇偶校验。
停止位:高电平代表一个字符帧结束。
(以发送十进制的198,也就是二进制的11000110为例)
四、通信方式:
单工通信是一种单向通信模式,数据只能在一个方向上传输。通常,一个设备是发送者,而另一个设备是接收者。
半双工通信是一种双向通信模式,但是通信双方不能同时进行数据传输。在任意时刻,一个设备可以发送,而另一个设备可以接收,但不能同时进行。
全双工通信是一种双向通信模式,其中通信的双方能够同时进行发送和接收操作,允许双方同时传输数据。
五、接口标准
UART串口通讯电平是比较多种多样的,有3.3V/5VTTL电平、RS232电平、RS485/422电平,不同的电平对应不一样的场合。
UART串口通讯电平,当距离在0.5米以内芯片之间然后是板间通讯的话,我们可以使用TTL电平进行通信,那当距离在15米以内然后0.5米以上的时候可以用RS232电平,那当需要距离更远的时候我们就可以用485/422电平进行通讯了。
六、数据帧格式:
包括起始位、数据位、校验位以及停止位。
1.起始位 (Start Bit):
长度为1位,用于标识数据帧的开始,通常,起始位是一个逻辑0(低电平)。
2.数据帧 (Data Frame):
包含5到9位的数据位,这些位是实际要传输的数据。
3.校验位(Parity Bits):
可选,长度为0到1位,用于错误检测,校验位可以是奇校验(如果数据位中1的个数为偶数,则校验位为1,反之为0) 或偶校验(如果数据位中1的个数为奇数,则校验位为0,反之为1),有些系统可能不使用校验位。
4.停止位 (Stop Bits):
长度为1到2位,用于标识数据帧的结束,停止位是逻辑1(高电平),使用1位或2位停止位可以提供额外的稳定性,特别是在数据传输速度较慢时。
七、存在的问题
1.电气接口不统一
UART 一般直接使用处理器使用的电平,即TTL电平,但是不同处理器之间使用的电平存在差异,所以不同的处理器使用UART通信一般不能直接相连。
UART没有规定不同器件连接时的连接标准,所以不同器件之间通过UART连接不太方便。
2.抗干扰能力差
UART一般直接使用TTL电平表示0和1,因此抗干扰能力弱,在传输过程中容易出错。
3.传输距离短
UART通信对于时钟同步非常敏感。在长距离传输中,时钟信号可能会因为传播延迟而引起时序问题。同时随着传输距离的增加,电信号可能会受到噪声、信号失真和衰减等影响,导致信号质量下降。这可能导致接收端无法正确解读发送端的信号,从而限制了传输距离。