stm32中常见的通信协议之USART(串口)

1.USART的概述

USART是一种通用的串行、异步通信总线,该总线有两条数据线,可以实现全双工的发送和接收。

串口的通信速度用波特率来表示,其单位为bps(bit per second)即每秒钟传送bit的数量。

2.USART的帧格式

在这里插入图片描述

  • 串口规定,数据线在空闲的状态下,必须是置为高电平的状态。
  • 起始信号为低电平,因为串口空闲状态下为高电平,如果要开始发送数据,那么就要以低电平为起始信号,如果不是低电平为起始信号,那么在发送0xffff的时候,就不知道在什么时候开始发送信号。
  • 串口协议规定,数据位先发低位再发高位,可以发送5-8位,但一般使用都是发送8位。
  • 串口的校验位,常用的是奇偶校验,是看数据位里面1的个数,校验位是可有可无的。
  • 串口的停止位,停止位是必须要有的,可以是1位、1.5位或者2位,必须是高电平,表示一次串口通信的结束。

3.串口通信存在的问题

  1. 当数据位发送01的时候,发送的信号是低电平——高电平,当数据位发送0011的时候,发送的信号也是低电平——高电平,这样怎么区分是发送的01还是发送的0011呢,就是需要靠波特率来区分,比如说,当波特率为1的时候,表示1秒钟发送一个2进制位,所以发送01中的0的时候需要1s,而发送0011中的00的时候需要2s,这就是用来区分发送的是01还是0011。
  2. 由于串口通信是异步的,也就是说接收方和发送方的时间信号是不同步的。假设,当前的波特率是1bps,如果发送方发送一位以后,时间持续1s,而接收方由于时间信号问题,认为只持续了0.9s,这就会导致接收方和发送方两者出现时间差,如果要是发送了10位数据,这样就会错出一位,导致整个数据都不能使用,所以串口协议规定不能进行数据的连续发送,只能发送5—8位来避免这种错误的出现。

4.串口的硬件连接

在这里插入图片描述
串口数据线一般是有两根线,因为串口的通信是全双工的,所以可以一边发送,一边接收。但是两个设备之间的数据线要交叉连接,设备1的TXD与设备2的RXD相连,设备1的RXD与设备2的TXD相连。

5.串行通信的过程

在这里插入图片描述
当外部设备通过串行方式发送到串行输入移位寄存器中,然后,串行输入移位寄存器一次性将数据传入到输入数据缓冲器中,MCU就会来读取数据。

发送过程正相反。

6.串口通信常用的寄存器

在这里插入图片描述
串口通信常用到的寄存器包括状态寄存器、数据寄存器和波特率寄存器。但是我一般在写程序的过程中都是使用库函数的方式来写单片机程序,所以这些寄存器都只是了解就好。

7.串口通信的具体程序实现

串口通信的实现都是通过USART.h这个官方提供的固件库中的相关函数来进行配置的,后期我会专门写一篇文章来讲述串口是怎么用库函数来配置的。

以上内容就是我对串口知识的一些理解,希望各位大佬可以批评指正,不胜感激!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌入式进阶之路

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

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

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

打赏作者

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

抵扣说明:

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

余额充值