UART知识

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)作为一种串行通信设备,是一种双向、串行、异步的通信总线,用一根数据接收线(RX)、数据发送线(TX)和地线(GND)就能实现全双工通信。如下图所示:
 

使用 UART 进行通信时,传输单位为数据帧。一个完整的数据帧包括数据位,起始位校验位停止位,其中校验位可按需求选择添加或不添加,停止位个数可进行配置。UART 帧格式如下图所示。 

注:UART在没有数据传输时处于空闲态,在空闲态TX、RX都处于高电平,当TX需要进行数据传输时先发一个起始位(低电平),RX检测到起始位(低电平)时开始进行数据接收。UART可以通过设置检验位判断数据传输是否正确。UART通过停止位判断一个数据(1字节)是否传输完毕。只有接收到停止位后才能开始下一个数据的传输。

 起始位:使用 UART 传输数据时,接收与发送方没有统一的时钟,如果发送方直接发送数据,接收方不知道什么时候有数据进行传输,则在进行数据的接收时有可能会造成数据错误,因此需要添加开始数据传输的标志位。TX 与RX 在没有数据传输的时候处于空闲状态,总线均为高电平。因此在空闲态时 RX线上出现一位低电平,说明开始进行数据传输,RX线在停止位之后或者空闲态时检测到一个低电平 ,则表示进行数据传输。

数据位: 数据位就是需要进行传输的数据,数据位的位数是可以根据通信的需求进行编程设置,可以设置位5到8位,一般设置为8位,在进行数据传输之前,接收方与发送方需要对数据位数进行统一的定义,以免出现数据漏接或多接的情况。 

校验位:  在使用 UART 进行数据传输时可以在数据帧中添加校验位,用来判断数据传输是否正确,UART 采用奇校验或偶校验的方式,一般放置在停止位之前,如果校验错误,则说明数据传输过程中发送错误,接收到的数据为无效数据;如果奇偶校验校正确,则可以将数据进行接收并且进行进一步的传输。在接收、发送双方进行数据传输之前需要进行配置工作,选择是否在数据帧中添加校验位。

停止位:  停止位处于一个数据帧的最末尾。在默认的情况下停止位是 1 位的高电平,也可以根据使用需求配置为 1.5 位或 2 位。如果没有在预期的位置接收到停止位,则会产生帧错误。

空闲:UART 总线上没有数据传输时,处于空闲状态。空闲状态下,UART 接收、发送的 RX、TX 端口的电平状态均为高电平。

波特率:由于 UART 通信为异步通信,因此发送方与接收方之间不存在同步的时钟线,为了保证接收方、发送方能够正确的进行数据传输,就要求接收方与发送方定义相同的传输速率。UART 串口的通信速率使用波特率来表示,  波特率越高,就表示传输的速率越快。

UART 一般通过对系统时钟进行计数分频的方式产生相对应的波特率时钟,接收器、发送器则根据此时钟进行数据的发送与接收。在接收数据时,为了避免信号毛刺带来的干扰,一般会在数据的中间位置进行采样。 

接收器会在 RX 线上检测到下降沿时开始接收数据,若仅依靠检测到下降沿就认为该起始位有效,在线路上出现毛刺、无效起始位时,会接收到无效的数据,从而导致传输错误。在检测到下降沿后,在起始位的中间位置进行采样,确保该起始位为有效起始位,否则将抛弃该起始位,继续监测有效起始位。 
————————————————
版权声明:本文为CSDN博主「狮子座硅农(Leo ICer)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qianniuwei321/article/details/123527343

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值