UART 串口通信协议

本文使用的是 HAL 库。


前言


一、同步,异步传输

举个生活中的例子:

  • 同步:朋友打电话说到我家吃饭,我在家里等他们。
  • 异步:朋友没有提前打招呼,突然就到我家来了。
  1. 同步传输:
    同步传输要涉及两个信号:时钟信号(用来通知对方要读取数据了),数据信号(用来传输数据)。
    在这里插入图片描述

  2. 异步传输:
    异步传输没有时钟线,只 需要数据线 ,但是双方需要遵守相同的约定:起始信号的标志(例如 一个9ms的低电平,4.5ms的高电平),数据的表示方式(什么是表示裸机0,裸机1)。
    在这里插入图片描述

区别: 同步传输抗干扰能力强,需要2条数据线(时钟线,数据线)。异步传输抗干扰能力弱,只需要数据线。

二,单工 / 半双工 / 全双工

  1. 单工:数据只能在一个方向上传输的通信方式。要么做发送设备,要么做接收设备 -----> 广播,收音机
  2. 半双工:数据能够在两个方向上传输,但不能同时进行。在同一时间段内,通信双方只能执行发送或接收操作,不能同时进行。-----> 对讲机
  3. 全双工:数据能够同时在两个方向上传输的通信方式。在全双工通信中,通信双方可以同时进行发送和接收操作。可以收、可以发,并且可以同时进行数据收发 ----> 电话
    在这里插入图片描述

三、UART串口协议

  1. 连接方式:
    UART 采用 全双工(发送,接收采用不同的引脚) 的通信方式,只需要三根线:TXD 用来发送数据, RXD 用来接收数据, GND 设备接地(提供参考电平)。

    串口通信协议 没有时钟线,是 异步传输

在这里插入图片描述

  1. 串口的配置信息
    在这里插入图片描述
    在这里插入图片描述
    先发送低位,再发送高位。一个起始位,8个数据位,一个校验位,一个停止位。
  • 波特率:单位 bit / s, 表示一秒钟传输的数据位数。波特率是 115200 表示,一秒钟可以传输 115200 bits数据。
  • 数据位: 实际的数据部分,根据串口通信的配置可以是 5,6,7或 8位。
  • 校验位:用于检测数据位传输过程中是否出现了错误。可以是 奇校验(奇数个高电平),偶校验(偶数个高电平)。
  • 停止位:一帧数据传输结束的标志。

四、硬件结构,寄存器分析

USART 方框图分析 :
在这里插入图片描述

  1. USART_BRR : 波特率寄存器, 用于控制数据发送,接收的速率。(波特率:每秒钟传输的位数,单位:bits/s)

  2. USART_TDR : 发送数据寄存器。数据写入 TDR 中后,会放入移位寄存器 Shift Reg 中。

  3. USART_RDR : 接收数据寄存器。数据会从 移位寄存器 Shift Reg 中放入 RDR 中进行读取出来。

  4. Shift Regisiter : 移位寄存器,将数据 一位一位的 发送出去,或者读取进来。

  5. USART_SR : 状态寄存器。用于监控和控制 USART 模块的状态。

在这里插入图片描述
在这里插入图片描述

  • TXE(Transmit Data Register Empty):

这个标志位指示 USART 发送数据寄存器(USART_DR)是空的,可以写入新的数据进行发送。当发送缓冲区为空并且准备好接收新的数据时,此标志位被置位。

  • RXNE(Receive Data Register Not Empty):

这个标志位指示 USART 接收数据寄存器(USART_DR)中有可用的接收数据。当接收缓冲区中有新的数据可供读取时,此标志位被置位。

  • TC(Transmission Complete):

这个标志位指示 USART 发送操作已完成。当最后一个数据位从发送寄存器传输到发送线路并成功发送时,此标志位被置位。

数据的读写依靠 USART的相关寄存器来运行。

例如:

写数据:
将数据 val 写入 发送数据 TDR 寄存器 ,TDR寄存器中的值就会自动放入 移位 shift Reg 寄存器中,然后就会 逐位 发送出去。

写数据时先判断 状态寄存器 SR 的 TDR,再写数据。
读数据时先判断 状态寄存器 SR 的 RXNE,再读数据。

补充:
对于这个开发板没有涉及 FIFO 寄存器,这里给大家介绍一下 FIFO 寄存器。
在这里插入图片描述

FIFO 寄存器用于临时存储数据
例如:在接收数据中,当接收到数据后 无法立刻读取,如果没有 FIFO 下一次的数据会将这次的覆盖;如果存在 FIFO,则未读取的数据将会存放在 FIFO 临时存储寄存器中。


总结

下篇文章为大家介绍 SPI 协议。

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果罐子♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值