UART通信基础

UART通信基础

还记得打印机、鼠标和调制解调器的粗电缆和那些笨重的连接器吗?在USB出现之前这些设备都是通过UART与计算机进行通信的。尽管USB在很多领域都逐步取代UART,但UART使用的简洁性是其相较于USB一个巨大的优势,也正因如此,UART仍旧广泛使用在许多小型电子设备中,如GPS、蓝牙和RFID读卡器等与树莓派或其他微控制器间的通信。

Basics of UART Communication

UART的全称是Universal Asynchronous Receiver/Transmitter(通用异步收发器),因此,UART不是通信协议,而是一种应用在微控制器或独立芯片上的电路实体,UART的作用即是发送与接收串行数据。

UART工作时仅需两根通信线,其实UART工作的原理并不复杂,但是如果能在此之前先了解一下SPI的工作原理并进行对比效果可能会更好。

UART通信简介

在UART通信中,一般是两个UART直接进行信息交互,发送方的UART将来自CPU或其他控制单元的并行数据转化为串行数据并将其通过线缆传送到接收方的UART,接收方UART则将接收到的串行数据又重新转换为并行形式,因此一般情况下仅需两根电缆线即可实现全双工的UART通信,通信过程中的数据流可表示为

Introduction to UART - Basic Connection Diagram

UART采用异步方式传输数据,这就意味着不存在时钟信号来同步发送方的输出数据位与接收方的输入数据位。由于没有了时钟信号,UART采用在数据包中引入起始位与停止位的方法,以协助UART在合适的时刻进行数据的读取。

当接收方检测到数据包的起始位时,它开始以固定频率读取输入的数据流,这个固定的频率就是波特率,波特率是衡量数据传输速度的物理量,其单位时比特每秒(bps)。数据发送方与接收方需要遵循相同的波特率通信才能正常进行。一般情况下,硬件设计都保有一定的容错率,因此从经验来看发送方UART与接收方UART的波特率偏差最好不要超过 10 % 10\% 10%

从而UART通信的特点可以总结为

通信线:2
传输速率:最高115200 baud,一般9600baud
同步或异步:异步
串行或并行:串行
最大主机数目:1
最大从机数目:1
UART工作方式

UART的工作主要是发送数据至数据总线或者从数据总线上读取数据。通常数据都是由CPU,存储设备或者微控制器发送至数据总线,此后数据再从数据总线上由发送端UART发出。当发送端UART从数据总线上获取到并行的数据后,它将在数据中加入起始位、奇偶校验位与停止位以构成数据包,然后这个数据包经过UART的Tx引脚串行地发出。同理,接收端的UART通过其Rx引脚读取数据包,然后将数据包中的起始位、奇偶校验位和停止位移除并将串行数据转换为并行数据,最后这些数据传输到接收端的数据总线上。

Basics of UART Communication

UART采用数据包的形式进行数据收发,每一个数据包包含一个起始位,5-9个数据位(数据帧),一个可选的奇偶校验位和1-2个停止位。

Introduction to UART - Packet, Frame, and Bits
起始位(Start Bit)

UART的数据传输线在未发送数据是默认保持高电平状态。当数据准备发送时,UART将传输线的电平由高拉低并保持一个时钟周期。当接收端的UART检测到电平变化时(起始位),它就开始按照既定的波特率接收数据。

数据帧(Data Frame)

数据帧部分包含真正的有效信息。如果使用奇偶校验位则数据帧可包含5-8个数据位,如果不使用奇偶校验位则可以包含9个数据位。一般情况下,数据从最低位开始发出。

奇偶校验(Parity)

奇偶校验位表征数据从发送端传输到接收端的过程中是否发生了变化。在传输过程中,数据位可能因为电磁干扰,波特率失配或长距离传输导致的电平降落而产生变化。当接收端UART读取数据帧时,它不断计数数据中比特值为1的数据位的个数并计算其个数总和是奇数或偶数。如果数据包中的奇偶校验位为0(偶校验),则表示初始数据帧中的逻辑高电平1的数据位数为偶数,同理,如果奇偶校验位是1(奇校验),则表示初始数据帧中的逻辑高电平1的数据位数为奇数。如果接收端统计的数据帧中的逻辑高电平数据位的个数与奇偶校验位相符,则表示数据传输没有发生错误。如果奇偶校验位为0,而计数得到的1的个数为奇数,或者奇偶校验位为1,而计数得到的1的个数为偶数,那么接收端的UART则可以知道数据帧接收出现异常。

停止位(Stop Bit)

为了标记数据传输已经结束,发送端的UART需要将数据传输线从低电平拉高至高电平并至少维持2个Bit时长(2个时钟周期)。

UART传输步骤
  1. 发送端UART从数据总线上接收并行数据

    Introduction to UART - Data Transmission Diagram UART Gets Byte from Data Bus

  2. 发送端UART为数据帧添加起始位、奇偶校验位和停止位

    Introduction to UART - Data Transmission Diagram UART Adds Start, Parity, ad Stop Bits

  3. 数据包由发送端UART串行传输至接收端UART,接受端UART按照既定的波特率采样数据线电平

    Introduction to UART - Data Transmission Diagram Transmitting UART Sends Data Packet Serially to Receiving UART

  4. 接收端UART舍弃数据包中的起始位、奇偶校验位与停止位,将数据帧从数据包中分离

    Introduction to UART - Data Transmission Diagram UART Removes Start, Parity, and Stop Bits

  5. 接收端UART将串行数据转换为并行数据并将其传输至接收端的数据总线

img
UART通信优缺点

没有一个通信协议是完美的,但是每个协议都可以在某一特殊的领域做到极致。

采用UART进行通信的优势有:

  • 只需两根传输线
  • 不需要时钟信号
  • 具有奇偶校验机制
  • 数据包的结构可以自定义(接收方与发送法达成一致的情况下)
  • 广泛使用,资料众多

采用UART进行通信的劣势有:

  • 数据帧中最多只可以包含9个数据位
  • 不支持多主机或多从机
  • 收发双方的波特率偏差需要控制在合理范围内
延伸阅读

SPI通信基础I2C通信基础

原文链接(Reference)

https://www.circuitbasics.com/basics-uart-communication/

原文链接(Reference)

https://www.circuitbasics.com/basics-uart-communication/

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值