大家好,欢迎来到IT知识分享网。
UART通信协议
一、UART是什么?
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),它将要传输的数据在串行通信与并行通信之间加以转换。URAT包括RS232、RS422、RS423、RS449、RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。以RS232为例,它是物理层的电气接口标准,规定了通信口的电气特性、传输速率、连接特性和接口的机械特性等内容,实际上是属于通信网络中的物理层(最底层),与通信协议没有直接的关系。
1.同步串口通信 vs 异步串口通信
同步和异步是两种不同的通讯方式。同步:在传输数据时,发送方与接收方要定义一个相同的时钟,用于实现数据的接收与发送;异步:以一个字符为传输单位,通信过程中两个字符之间的时间间隔是多少是不固定的,但是在同一个字符中的两个相邻位之间的时间间隔是固定的。
2.串行通信
利用一条传输线将数据一位位地顺序发送。
二、通信协议
- 波特率:数据传送是用波特率表示的,即每秒钟传送的二进制位数,单位bps(bit per second)。常见比特率:9600bps 19200bps 38400bps 57600bps 115200bps。举例:9600bps = 1s发送或接收9600bit数据,那么1bit数据的时间宽度是1/9600s。
- 起始位:先发出一个逻辑0的信号,表示传输数据的开始。
- 数据位:衡量通信中实际数据位的参数,标准的数据位可以是5、7、8位,从最低位开始传输。
- 奇偶校验位:UART发送时,检查发送数据中1的个数,自动在奇偶校验位上添上1或者0,用于发送数据的校验。可以分为无校验、奇校验(如果数据位中’1’的数目是偶数,则校验位为1,否则为0)、偶校验(如果数据为中’1’的数目是偶数,则校验位为0,如果为奇数,否则为1)、1校验(校验位始终为1)、0校验(校验位始终为0)。
- 停止位:数据的结束标志,可以是1位、1.5位、2位的高电平。
- 空闲位:处于逻辑1状态,表示当前线路上无数据传输。
- 帧间隔:就是传送数据的帧与帧之间的间隔大小,以位或者时间为计量单位。
三、工作原理
串口允许两个时钟频率不同的设备进行通讯,但要求波特率一致。传输数据之前,UART之间要约定数据的传输速率(即每位所占时间,其倒数成为波特率)、数据的帧格式(即配备相同的数据包结构:有多少个数据位、是否使用校验位、是奇校验还是偶校验、有几位停止位)。
发送数据的过程:空闲状态,线路处于高电平;当收到发送指令之后,拉低线路的一个数据位的时间(如图1中起始位的时间),接着数据按照低位到高位依次发送,数据发送完毕之后,接着发送奇偶校验位和停止位(停止位高电平),一帧数据发送完成。
数据接收过程:空闲状态,线路处于高电平;当检测到线路的下降沿时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备接收数据或存入缓冲。
四、特点
- 线路简单,成本低,只使用两根电线,一根线发送数据,一根接收数据,传输距离远,但传输速度慢;
- 不需要时钟信号,发送和接收1bit有固定的宽度,也就说只有等于这个时间宽度时才被认为是1bit;
- 只要双方设置后,可以改变数据包的结构;
- 双向通信,异步通信,可以实现全双工传输和接收;
补充:单工:只能从一边到另一边的通信,一开始就定义好哪一边是发送端,哪一边是接收端,不可逆,通道是单向的;半双工:允许数据在两个方向上传输数据,但是在某一时刻,只允许数据在一个方向上传输;全双工:允许数据同时在两个方向上传输。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/21800.html