目录
简介
UART,即通用异步接收器/发送器,是最常用的设备间通信协议之一,正确配置后,UART可以配合许多不同类型的涉及发送和接收串行数据的串行协议工作。在串行通信中,数据通过单条线路或导线逐位传输。在双向通信中,我们使用两根导线来进行连续的串行数据传输。根据应用和系统要求,串行通信需要的电路和导线较少,可降低实现成本。
特点
通用异步收发器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种串行、异步、全双工的通信协议,在嵌入式领域应用的非常广泛。
UART作为异步串行通信协议的一种,工作原理是将传输数据的每个二进制位一位接一位地传输。在UART通信协议中信号线上的状态为高电平时代表‘1’,信号线上的状态为低电平时代表‘0’。比如使用UART通信协议进行一个字节数据的传输时就是在信号线上产生八个高低电平的组合。
- 串行通信是指利用一条传输线将数据一位位地顺序传送,也可以用两个信号线组成全双工通信,如rs232。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合。
- 异步通信以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。通俗说是两个uart设备之间通信的时候不需要时钟线,这时候就需要在两个uart设备上指定相同的传输速率,以及空闲位、起始位、校验位、结束位,也就是遵循相同的协议。
- 数据传送速率用波特率来表示,即每秒钟传送的二进制数。例如数据传送速率为120字符/秒,而每一个字符为10位(1个起始位,7个数据位,1个校验位,1个结束位),则其传送的波特率为10×120=1200字符/秒=1200波特。
接口
在UART通信中,两个UART直接相互通信。发送UART将来自控制设备(如CPU)的并行数据转换为串行形式,以串行方式将其发送到接收UART,然后由接收UART将串行数据转换回并行数据以用于接收设备。只需要两条线即可在两个UART之间传输数据。数据从发送UART的Tx引脚流到接收UART的Rx引脚。(发送器TX、接收器RX)
数据传输
将要发送数据的UART从数据总线接收数据。数据总线用于通过其他设备(例如CPU、内存或微控制器)将数据发送到UART。数据以并行形式从数据总线传输到发送UART。发送UART从数据总线获取并行数据后,它将添加起始位、奇偶校验位和停止位,以创建数据包。接着,数据包在Tx引脚上逐位串行输出。接收UART在其Rx引脚上逐位读取数据包。然后,接收UART将数据转换回并行形式,并删除起始位、奇偶校验位和停止位。最后,接收UART将数据包并行传输到接收端的数据总线。
UART传输的数据被组织成数据包,每个数据包包含1个起始位、5到9个数据位(取决于UART)、1个可选奇偶校验位,以及1个或2个停止位:
起始位
当不传输数据时,UART数据传输线通常保持高电压电平。若要开始数据传输,发送UART会将传输线从高电平拉到低电平并保持1个时钟周期。当接收UART检测到高到低电压跃迁时,便开始以波特率对应的频率读取数据帧中的位。
数据帧
数据帧包含所传输的实际数据。如果使用奇偶校验位,数据帧长度可以是5位到8位。如果不使用奇偶校验位,数据帧长度可以是9位。在大多数情况下,数据以最低有效位优先方式发送。
奇偶校验
奇偶性描述数字是偶数还是奇数。通过奇偶校验位,接收UART判断传输期间是否有数据发生改变。电磁辐射、不一致的波特率或长距离数据传输都可能改变数据位。
接收UART读取数据帧后,将计数值为1的位,检查总数是偶数还是奇数。如果奇偶校验位为0(偶数奇偶校验),则数据帧中的1或逻辑高位总计应为偶数。如果奇偶校验位为1(奇数奇偶校验),则数据帧中的1或逻辑高位总计应为奇数。
当奇偶校验位与数据匹配时,UART认为传输未出错。但是,如果奇偶校验位为0,而总和为奇数,或者奇偶校验位为1,而总和为偶数,则UART认为数据帧中的位已改变。
奇偶校验位还可以设置为无校验、校验位始终为1、校验位始终为0。
停止位
为了表示数据包结束,发送UART将数据传输线从低电压驱动到高电压并保持1到2位时间。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备之间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟的机会。停止位个数越多,数据传输越稳定,但是数据传输速度也越慢。
UART传输步骤
第一步:发送UART从数据总线并行接收数据。
第二步:发送UART将起始位、奇偶校验位和停止位添加到数据帧。
第三步:从起始位到结束位,整个数据包以串行方式从发送UART送至接收UART。接收UART以预配置的波特率对数据线进行采样。
第四步:接收UART丢弃数据帧中的起始位、奇偶校验位和停止位。
第五步:接收UART将串行数据转换回并行数据,并将其传输到接收端的数据总线。
UART的优缺点
没有哪种通信协议是完美的,但是UART非常擅长于它们的工作。以下是一些优缺点,可帮助您确定它们是否符合您的项目需求:
优点
仅使用两根传输线
无需时钟信号
具有奇偶校验位以允许进行错误检查
只要双方都设置好数据包的结构,即可改变其数据包结构
有完整的文档且是可广泛使用的方法
缺点
数据帧的大小最大为9位
不支持多个从属系统或多个主系统
每个UART的波特率必须在彼此的10%之内
应用
- 部分无线通信模块具有UART通信接口,比如蓝牙模块、NBIOT模块、WIFI模块、GSM模块、GPS模块
- 是一种容易实现的MCU和电脑间的通信方式,用于辅助调试代码 (MCU传送变量、寄存器的值给电脑)
- 用于电脑控制MCU(电脑传送 指令数据 给MCU),通过上位机控制下位机
参考链接:https://blog.youkuaiyun.com/liubin1222/article/details/107184636
http://zhuanlan.zhihu.com/p/600121894
http://zhuanlan.zhihu.com/p/150504364