[通信协议]UART

复习项目时,顺带复习一下基础的通信协议UART、SPI和I2C,先从UART看起。

1、UART概念

UART全称为通用异步收发器。在UART通信中,两个UART可以直接通信。

发送端的UART将来自控制设备(CPU)的并行数据转换为串行数据,以串行方式将其发送到接收端的UART,然后由接收端的UART将串行数据转换为并行数据以用于接收设备的正常处理。

因此UART只需要两条线RX/TX即可在两个UART之间传输数据。

2、帧格式

UART传输的数据被封装成数据包。每个数据包包含1个起始位,5~9个数据位(取决于UART的具体设置),一个可选的奇偶校验位以及1个或2个停止位,具体如下图所示

在这里插入图片描述

 主要由起始位、数据位、校验位和停止位构成一帧数据。

起始位

因为UART没有控制线,所以要让接收方知道什么时候开始接收数据,在发送数据之间先发一位低电平作为数据发送的起始标志,接收方在IDLE时,一旦检测到高电平到低电平的转换,就以波特率的频率读取数据位中的每一位数据。

数据位

正在传输的数据。

有校验位时,5~8位,没有校验位时,最高可9位。

校验位

可有可无,奇偶校验、和校验、CRC校验。

军工类一般spec要求CRC校验(实际项目用的和校验)。

停止位

发送端UART将数据传输线从低电平拉高,表示数据包传输结束。

因为数据是在传输线上定的,所以通信中不同设备可能出现不同步,停止位不仅代表传输结束,也给了设备校正时钟同步的时间。

停止位的位数越多,不同时钟同步的容错越高,但是同样的数据传输相对较慢。

3、波特率

波特率指串口数据的传输速度,在使用UART协议前一定要将两端的波特率同步,保证发送端的数据在接收端可以正确采集。

常见波特率:300、1200、2400、9600、19200、38400、115200。代表每秒钟传输的数据位数。

假设系统时钟为100MHz,波特率为9600。那么传输1bit需要的时间为:

\frac{1}{9600}= 104.166us

100MHz对应时钟周期为10ns,因此需要10416个时钟周期可以传输1bit数据。

这也是设计要点:需要一个10416的分频电路来对100MHz时钟进行处理,因此在设计UART时,需要分频电路根据波特率处理全局时钟,按照分频后的时钟节奏来发送数据和接收数据。

4、传输过程

发送端UART从数据总线转换并行数据,将起始位、校验位、停止位添加到数据包中。

数据包从发送端UART串行发送到接收端UART,接收端按照波特率对数据线进行采样。

接收端UART解析数据,保存数据位,丢弃数据包中的其它位。

接收端UART将串行数据转换回并行数据,并传输回数据总线。

5、优缺点

优点

a. 通信只需要两条数据线;

b. 无需时钟信号;

c. 有奇偶校验位,方便通信的差错检查;

d. 只需要接收端和发送端设置好数据包结构,即可稳定通信;

缺点

a. 数据帧最大支持9位数据;

b. 不支持多主机或多从机的主从系统;

 

参考资料:

UART协议快速扫盲(图文并茂+超详细)_小麦大叔的博客-CSDN博客

【数字IC】深入浅出理解UART协议_uart帧格式_张江打工人的博客-CSDN博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值