串口通信之 UART

1.介绍

        UART (Universal Asynchronous Receiver and Transmitter)即通用异步接收发送器,是一种通用的串行数据总线,属串口通信的一种,用于异步通信。该总线有发送和接收线,可双向通信实现全双工传输和接收。作为一个实现并行信转串行信号输出的芯片,常被集成于其他通讯接口的连接上。在FPAG开发板中,常用UART来与PC进行通信,包括数据通信、命令和控制信息的传输。

标题

 异步通信:UART协议中接收方和发送方不使用统一的参考时钟,即发送和接收设备 有各自的时钟来控制数据的发送和接收过程。双方以字符为单位,通信中两个字符间的时间间隔是多少是不固定的,然而在同一个字符中的两个相邻bit间的时间间隔是固定的。双方获得同步的方法就是采用固定的串行数据格式。 

串口通信:串口通信是指外设和计算机之间,通过数据地线、控制线等,按位传输数据的一种通讯方式。这种方式使用的数据线少,在远距离传输时可节约通信成本,但是其传输速度要比并行传输低。

     串口按位即bit发送和接收字节。通常串口用于ASCII码字符的传输,通信使用三根线即发送、接收和地线即可。由于串口通信是异步的,串口能在一根线上传输另一根线上接收数据。其他线用于握手,但不是必须的

串口通信的重要参数波特率数据位停止位奇偶校验位。两个进行通信的双方,端口的这些参数必须匹配。

UART与RS232区别:UART为TTL电平(3.3V)接口,而RS232为RS232 电平(5-12V)串口。当一个设备上的UART需要与PC相连时类型的PC端上的串口就是RS232),其上一本有一个RS232驱动器来转换电平(类似MAX232芯片)。

异步通信的数据格式

2.UART通信协议与传输时序

    UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位一位地传输。故 UART通信时,首先将接收到的并行数据转换成串行数据进行传输。消息帧格式以及时序图如下:

     消息帧从起始位开始,后面是7或8个数据位(先传低位,再传高位),然后是一个可用的奇偶校验位和一个或几个高位停止位。在接收端检测到起始位时就知道数据准备发送了,并尝试与发送端的时钟频率同步。

起始位:发送端先发出一个逻辑“0”的信号,表示传输字符开始。

资料位(数据位):紧跟起始位。资料位可以是4、5、6、7、8位,构成一个字符。通常采用ASCII码,且低位先传,靠时钟定位。

奇偶校验位:资料位后加上1位,使得“1” 的位数应为偶数(偶校验)或奇数(奇校验)以此来校验资料传输的正确性。

停止位:这是一个字符数据的结束标志。  可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。

     接收过程中,UART会从接收到的消息帧中去掉起始位和结束位。如果有奇偶校验位,那么需要对拿到的数据进行奇偶校验,并且负责将数据字节进行串行转并行。

波特:是衡量数据传送速率的指标。表示每秒钟传送的的二进制位数。一个符号代表的信息量(比特数)与符号的阶数有关。例如传输使用256阶符号,每8bit代表一个符号,资料传送速率为120字符/秒,则波特率就是120baud,比特率是120*8=960bit/s。这两者的概念很容易搞错。

16倍频采样

        通常会采用常规的16倍频采样方法:即采用数据传输速率(波特率)的16倍进行采样,采样时钟连续采样到8个低电平信号,可确定

该低电平为真正的起始信号,从而防止干扰信号导致的虚假起始位现象。此后接收器每隔16个采样时钟采样一次,并把采样得到的数据作为输入数据,以移位方式存入到接收移位寄存器。

        起始位检测8个连续脉冲的另一个原因是,采用16倍频的采样时钟,第8个采样脉冲所对应的数据波形正好是该数据位的正中点(上升沿采样),在该处读写数据会最安全准确。

分频系数 = 系统时钟/16*p。

3. Verilog实现

 功能模块的划分:

猜你喜欢

转载自blog.csdn.net/qq_26652069/article/details/90489628