赞
踩
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连接上。
它不是像SPI和I2C这样的通信协议,而是微控制器中独立的物理电路或独立的IC。
UART最好的一点是它只使用三根线就可以在设备之间传输数据,UART背后的原理很容易理解。
发送UART将来自CPU等控制设备的并行数据转换为串行形式,并将其串行发送到接收UART,接收UART然后将串行数据转换回接收设备的并行数据。在两个UART之间传输数据只需要两根线。数据从发送UART的Tx引脚流向接收UART的Rx引脚:
因为有两根数据线TX和RX,所以,可以以全双工的形式进行发送和接收数据。
单片机与PC之间的通信,为了保证数据通信的可靠性,双方都必须遵从UART协议。
其中各位的含义如下:
空闲位:空闲时数据线为高电平状态,代表无数据传输。
起始位:为了开始数据传输,发送UART发送1位逻辑0(低电平)。当接收UART检测到高电压到低电压转换时,它开始以波特率的频率读取数据帧中的位,开始传输数据。
数据位:可以是5~8位的数据,先发低位,再发高位,一般常见的就是8位(1个字节),其他的如7位的ASCII码。
校验位:奇偶校验,将数据位加上校验位,1的位数为偶数(偶校验),1的位数为奇数(奇校验)。奇偶校验位是接收UART在传输过程中判断是否有任何数据发生变化的一种方法。电磁辐射、不匹配的波特率或长距离传输时,数据都有可能发生变化。接收UART读取数据帧后,它会计算值为1的位数,并检查总数是偶数还是奇数。如果奇偶校验位为0(偶校验),则数据帧中的1位应总计为偶数。如果奇偶校验位是1(奇校验),则数据帧中的1位应总计为奇数。当奇偶校验位与数据匹配时,UART知道传输没有错误。但如果奇偶校验位为0,然而1位总计为奇数;或者奇偶校验位是1,并且1位总计是偶数,则数据帧中的位已经改变。
停止位:停止位是数据传输结束的标志,可以是1/1.5/2位的逻辑1(高电平)。
举个栗子:如果我们传输数据0X33(00110011),那么对应的波形就是如下这样,因为是LSB在前,所以8位数据依次是11001100。
发送0X33数据帧格式
如果再发其他数据,再依次循环这个过程即可。
UART是异步传输,以1个字符为传输单位,传输2个字符之间的时间间隔,比如传输0X33后再传输0X35,这两者时间间隔是未知的。
但是同一字符内相邻位间的时间间隔是确定的,比如0X33低两位的1和1之间的时间间隔是确定的,这涉及到UART传输速率的概念——波特率。
波特率的单位是bps,全称是bit per second,意为每秒钟传输的bit数量。
波特率9600bps,代表每秒钟传输bit的数量为9600,那么传输1bit数据的时间就是1/9600=104us,波特率115200bps,代表传输1bit数据的时间是8us。
UART以异步方式发送数据,这意味着没有时钟信号将发送UART的位输出与接收UART的位采样同步。发送UART不是时钟信号,而是将开始和停止位添加到正在传输的数据包中。这些位定义数据包的开始和结束,因此接收UART知道何时开始读取位。
两个UART还必须配置为发送和接收相同的数据包结构。
首先,UART1以9600波特率发送0X33,先在数据线上放1个104us脉宽的低电平(起始位),然后是连续2个104us脉宽的高电平(2bit逻辑1),依次类推。当接收UART检测到起始位时,它开始以9600波特率接收0X33,通过数这些数据的脉宽,来确认数据。为了确保数据传输的正确性,减少误差,一般UART1和UART2之间的波特率差别小于10%,一次最多只能传输1个字节(8bit),也有效减小了累计误差。
①发送UART从数据总线并行接收数据
②发送UART将起始位,奇偶校验位和停止位添加到数据帧
③整个数据包从发送UART串行发送到接收UART。接收UART以预先配置的波特率对数据线进行采样
④接收UART丢弃数据帧中的起始位,奇偶校验位和停止位
⑤接收UART将串行数据转换回并行并将其传输到接收端的数据总线
优点:只使用两根电线;不需要时钟信号;有一个奇偶校验位;只要双方设置后,就可以改变数据包的结构;有完整的文档并且具有广泛的使用。
缺点:数据帧的大小限制为最多9位;不支持多个从属或多个主系统;每个UART的波特率必须在10%之内。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。