串口通信之 UART

1.介绍

        UART (Universal Asynchronous Receiver and Transmitter)即通用异步接收发送器,是一种通用的串行数据总线,属串口通信的一种,用于异步通信。该总线有发送和接收线,可双向通信实现全双工传输和接收

        UART作为一个实现并行信转串行信号输出的芯片,常被集成于其他通讯接口的连接上。在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(log2[256])代表一个符号,此时资料的传送速率为120字符/秒,则波特率就是120baud,而比特率120*8=960bit/s。这两者的概念很容易搞错。

注意:

由于对于串口协议而言,码元是2进制的,所以波特率(通信原理中的传码率)在数值上和比特率是相等的。当波特率为115200时,本质就是串口每秒传送115200个bit的数据量。所以传送1个bit的时间等于1/115200秒,大约8.68us

16倍频采样

        通常会采用常规的16倍频采样方法:即采用数据传输速率(波特率)的16倍进行采样,采样时钟连续采样到8个低电平信号,可确定该低电平为真正的起始信号,从而防止干扰信号导致的虚假起始位现象。此后接收器每隔16个采样时钟采样一次,并把采样得到的数据作为输入数据,以移位方式存入到接收移位寄存器。

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

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

3. Verilog实现

 功能模块的划分:

 

 

 

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值