欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > stm32入门教程--USART外设 超详细!!!

stm32入门教程--USART外设 超详细!!!

2024/11/30 10:44:42 来源:https://blog.csdn.net/weixin_61733189/article/details/143406110  浏览:    关键词:stm32入门教程--USART外设 超详细!!!

目录

简介

什么是UART?

什么是USART?


简介

USART(Universal Synchron /Asynchronous Receiver /Transmitter)通用同步/异步收发器

 1、USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可以自动接收RX引脚的数据帧时许,拼接为一个字节数据,存放在数据寄存器里。

2、自带波特率发生器,最高达4.5Mbit/s

3、可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2)

4、可选校验位(无校验/奇校验/偶校验)

5、支持同步模式、硬件流控制、DMA、智能卡、IrDA、LIN

6、STM32F103C8T6 USART资源:USART1、USART2、USART3

什么是UART?

我们经常会遇到串口 叫UART,这少了个s,就是异步收发器,一般串口很少使用这个功能,所以其实UART和USART使用起来,也没有什么区别,其实STM32的USART模式就是比UART多了个时钟输出,它只支持时钟输出,不支持时钟输入,所以这个同步模式更多的是为了兼容别的协议或特殊用途而设计的,并不支持两个USART之间进行同步通信,所以我们学习串口主要还是异步通信。

什么是USART?

USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可以自动接收RX引脚的数据帧时许,拼接为一个字节数据,存放在数据寄存器里。

我们之前的串口协议,主要就是(如上图)靠收发这样的、约定好的波形来进行通信的,那USART外设,就是串口通信的硬件支持电路

USART大体可以分为发送和接收两部分 ,发送部分就是将数据寄存器的一个字节数据,自动转为协议规定的波形,从TX引脚发出,接收部分就是自动接收RX引脚的波形,按照协议规定,解码为一个字节数据,存放在数据寄存器里 ,这就是USART电路的功能当我们配置好USART,直接读写数据寄存器,就能自动发送和接受数据了。

下一条,自带波特率发生器,这个波特率发生器,就是用来配置波特率的 ,他其实就是一个分频器,比如我们APB2总线给个72MHz的频率,然后波特率发生器进行一个分频,得到我们想要的波特率时钟 ,最后在这个时钟下,进行收发,就是我们指定的通信波特率。

可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2),这些就是stm32USART支持配置的参数了,这个数据位长度就是我们前面的参数,有8位和9位。 9位就是包含奇偶校验位的长度,一般不需要奇偶校验位就是八位,需要就是九位

就是在连续发送时,停止位的长度决定了帧的间隔,我们最常用的的就是1位停止位,其他很少用。

下一点可选校验位,有无校验、奇校验、偶校验、但我们比较常用的是无校验。

以上的自带波特率发生器、数据为长度、可选校验位都可以通过配置寄存器来完成,使用库函数配置的话就更简单了,直接给结构体赋值就行。

 串口通信我们最常用的就是波特率 11520或 9600,数据位8位,停止位1位,无校验。

下一条,同步模式,就是多了个时钟CLK的输出;硬件流控制,这个是比如A设备有个TX向B设备的RX发送数据,A设备一直在发,发的太快了,B处理不过来,如果没有硬件流控制,那B就只能抛弃新数据或者覆盖原数据了,如果有硬件流控制,在硬件电路上就会多一根线 ,如果B没准备好接收,就置高电平,如果准备好了,就置低电平,A接收到了B反馈的准备信号,就只会在B准备好的时候,才发送数据,然后B没准备好,那数据就不会发送出去。

这就是硬件流控制,可以防止B处理慢而导致数据丢失的问题

硬件流控制STM32也是有的,不过我们一般不用

DMA是这个串口支持DMA进行数据转运 ,如果有大量的数据进行收发 ,可以使用DMA进行转运数据,减轻CPU的负担。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com