1、UART 传输协议传输协议时间:2014-6-18作者:yanwh通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作 UART,是一种异步收发传输器。将数据由串行通信与并行通信间作传输转换,作为并行输入成为串行输出的芯片 UART 是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。1 1、UART 通信协议通信协议UART 作为异步作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。其中每一位(Bit)的意义如下:起始位起始位:先发出一个逻辑”0”的信号,表示传输字符的开始
2、。数据位数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用 ASCII 码。从最低位开始传送,靠时钟定位。奇偶校验位奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。停止位停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。空闲位空
3、闲位:处于逻辑“1”状态,表示当前线路上没有数据传送。UART 协议传输时序如图1所示:图 1.UART 协议传输时序2 2、UART 工作原理工作原理发送数据过程发送数据过程:空闲状态,线路处于高电位;当收到发送数据指令后,拉低线路一个数据位的时间 T,接着数据按低位到高位依次发送,数据发送完毕后,接着发送奇偶校验位和停止位(停止位为高电位),一帧数据发送结束。接收数据过程接收数据过程:空闲状态,线路处于高电位;当检测到线路的下降沿(线路电位由高电位变为低电位)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备
4、准备接收数据或存入缓存。由于 UART 是异步传输,没有传输同步时钟。为了能保证数据传输的正确性,UART 采用 16 倍数据波特率的时钟进行采样。每个数据有 16 个时钟采样,取中间的采样值,以保证采样不会滑码或误码。一般 UART 一帧的数据位数为 8,这样即使每个数据有一个时钟的误差,接收端也能正确地采样到数据。UART 的接收数据时序为的接收数据时序为:当检测到数据的下降沿时,表明线路上有数据进行传输,这时计数器 CNT 开始计数,当计数器为 24=16+8 时,采样的值为第 0位数据;当计数器的值为 40 时,采样的值为第 1 位数据,依此类推,进行后面6 个数据的采样。如果需要进行
5、奇偶校验,则当计数器的值为 152 时,采样的值即为奇偶位;当计数器的值为 168 时,采样的值为1表示停止位,一帧数据接收完成。一个标准的10位异步串行通信协议(包含1个起始位、1个停止位和8个数据位)收发时序,如图2所示图 2.10位标准串行通信协议收发时序图3 3、UART 波特率发生器波特率发生器波特率是衡量数据传输速率的指标,表示每秒传送数据的字符数,单位为Baud。UART 的接收和发送是按照相同的波特率进行收发的。波特率发生器产生的时钟频率不是波特率时钟频率,而是波特率时钟频率的 16 倍,目的是为在接收时进行精确地采样,以提取出异步的串行数据。根据给定的晶振时钟和要求的波特率,可以算出波特率分频计数值。