UART定义、协议、工作模式详解

15 篇文章 2 订阅
4 篇文章 0 订阅

UART基本定义

      通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连接上。

      它不是像SPI和I2C这样的通信协议,而是微控制器中独立的物理电路或独立的IC。

      UART最好的一点是它只使用三根线就可以在设备之间传输数据,UART背后的原理很容易理解。

 

      发送UART将来自CPU等控制设备的并行数据转换为串行形式,并将其串行发送到接收UART,接收UART然后将串行数据转换回接收设备的并行数据。在两个UART之间传输数据只需要两根线。数据从发送UART的Tx引脚流向接收UART的Rx引脚:

 

UART工作模式

      因为有两根数据线TX和RX,所以,可以以全双工的形式进行发送和接收数据。

             

UART帧格式(UART协议)  

      单片机与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将串行数据转换回并行并将其传输到接收端的数据总线

                                          

 UART优缺点

  

      优点:只使用两根电线;不需要时钟信号;有一个奇偶校验位;只要双方设置后,就可以改变数据包的结构;有完整的文档并且具有广泛的使用。

      缺点:数据帧的大小限制为最多9位;不支持多个从属或多个主系统;每个UART的波特率必须在10%之内。

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值