UART串行通信

1.UART串行通信概述

串行通信分为两种方式: 同步串行通信和异步串行通信。

  • 同步串行通信需要通信双方在同一时钟的控制下,同步传输数据;常用的SPI以及IIC均是同步串行通信。
  • 异步串行通信是指通信双方使用各自的时钟控制数据的发送和接收过程。UART即为异步串行通信。

UART 是一种采用异步串行通信方式的通用异步收发传输器(universal asynchronous receiver-transmitter),它在发送数据时将并行数据转换成串行数据来传输,在接收数据时将接收到的串行数据转换成并行数据。数据从发送UART的Tx引脚流向接收UART的Rx引脚,硬件连接比较简单,仅需要3条线,如果两个设备UART电平不一致需要转换电平再连接。
UART串行通信_第1张图片

UART 串口通信需要两根信号线来实现,一根用于串口发送,另外一根负责串口接收。UART 在发送或接收过程中的一帧数据由 4 部分组成,起始位、数据位、奇偶校验位和停止位,如下图所示。

UART串行通信_第2张图片

  • 空闲位: UART协议规定,当总线处于空闲状态时信号线的状态为‘1’即高电平,表示当前线路上没有数据传输。
  • 起始位: 开始进行数据传输时发送方要先发出一个低电平’0’来表示传输字符的开始。
  • 数据位: 起始位之后就是要传输需要传输的数据,数据可以是5,6,7,8,9位,构成一个字符,一般都是8位。先发送最低位最后发送最高位。
  • 奇偶校验位: 数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。当然也可根据需求将校验位始终设为1或者始终设为0,也可省略掉校验位。
  • 停止位: 数据结束标志,可以是1位,1.5位,2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备之间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟的机会。停止位个数越多,数据传输越稳定,但是数据传输速度也越慢。

其中,起始位标志着一帧数据的开始,停止位标志着一帧数据的结束,数据位是一帧数据中的有效数据。校验位分为奇校验和偶校验,用于检验数据在传输过程中是否出错。奇校验时,发送方应使数据位中 1 的个数与校验位中 1 的个数之和为奇数;接收方在接收数据时,对 1 的个数进行检查,若不为奇数,则说明数据在传输过程中出了差错。同样,偶校验则检查 1 的个数是否为偶数。
奇偶校验采用异或(^)的方式来实现,当采用奇校验时,定义PARITY_MODE=1,接收第一个bit时,令parity_data<=PARITY_MODE ^ rx_data,接收之后的bit时只需令parity_data<=parity_data^ rx_data即可,当接收完毕时,若parity_data=0,则代表接收无误,反之则说明接收错误。当采用偶校验时,定义PARITY_MODE=0,接收第一个bit时,令parity_data<=PARITY_MODE ^ rx_data,接收之后的bit时只需令parity_data<=parity_data^ rx_data即可,当接收完毕时,若parity_data=0,则代表接收无误,反之则说明接收错误。

UART 通信过程中的数据格式及传输速率是可设置的,为了正确的通信,收发双方应约定并遵循同样的设置。数据位可选择为 5、6、7、8 位,其中 8 位数据位是最常用的,在实际应用中一般都选择 8 位数据位;校验位可选择奇校验、偶校验或者无校验位;停止位可选择 1 位(默认),1.5 或 2 位。串口通信的速率用波特率表示,它表示每秒传输二进制数据的位数,单位是 bps(位/秒),常用的波特率有 9600、19200、38400、57600 以及 115200 等。如果串口波特率设置为115200bps,那么传输一个比特需要的时间是1/115200≈8.68us。

在设置好数据格式及传输速率之后,UART 负责完成数据的串并转换,而信号的传输则由外部驱动电路实现。电信号的传输过程有着不同的电平标准和接口规范,针对异步串行通信的接口标准有 RS232、RS422、RS485 等,它们定义了接口不同的电气特性,如 RS-232 是单端输入输出,而 RS-422/485 为差分输入输出等。RS232 接口标准出现较早,可实现全双工工作方式,即数据发送和接收可以同时进行。

2. RS232、RS422、RS485的区别

RS-232 接口标准出现较早,信号采用负逻辑电平、单端传输方式工作。通过一根信号线发送,一根信号线接收,加上一根地线,RS-232 可实现全双工通信。由于单端传输方式抗干扰能力差,导致 RS-232 标准通信距离短(小于 15 米),数据传输速率低等问题。另外 RS-232 仅支持一对一通信,存在无法实现多个设备互联的缺点。

RS-422 由 RS-232 发展而来,它是为弥补 RS-232 之不足而提出的。RS-422 采用差分传输(又称平衡传输)方式,将最大传输速率提高到 10Mbps;当传输速率在 100kbps 以下时,传输距离可达 1200 米。由于采用差分传输方式,RS-422 需要 4 根信号线来实现全双工通信,两根用于发送、两根用于接收,一般会再加上一根地线。RS-422 允许在一条传输总线上连接最多 10 个接收器,从而实现单个设备发送,多个设备接收的功能。

为扩展应用范围,在 RS-422 基础上又制定了 RS-485 标准。RS-485 同样采用差分传输方式,但是 RS-485只有 2 根信号线,由发送和接收共用,因此发送和接收不能同时进行,只能实现半双工通信。RS-485 增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,各设备通过使能信号控制发送和接收过程。

你可能感兴趣的:(vivado,Verilog,网络)