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的负担。

相关推荐
沐欣工作室_lvyiyi9 分钟前
基于单片机的智能家居窗帘控制系统设计(论文+源码)
单片机·嵌入式硬件·毕业设计·智能家居·智能窗帘
嵌入式分享25 分钟前
嵌入式分享#41:RK3576改UART波特率【精简版】
linux·嵌入式硬件·ubuntu·嵌入式
典则1 小时前
STM32FreeRtos入门(四)——任务状态和调度
stm32·单片机·嵌入式硬件
充哥单片机设计1 小时前
【STM32项目开源】基于STM32的智能天然气火灾监控
stm32·单片机·嵌入式硬件
充哥单片机设计1 小时前
【STM32项目开源】基于STM32的智能仓库火灾检测系统
stm32·单片机·嵌入式硬件
就叫飞六吧3 小时前
普中stm32大Dap烧录流程
stm32
A9better4 小时前
嵌入式开发学习日志38——stm32之看门狗
stm32·嵌入式硬件·学习
小莞尔4 小时前
【51单片机】【protues仿真】基于51单片机智能路灯控制系统
c语言·stm32·单片机·嵌入式硬件·51单片机
辰哥单片机设计14 小时前
TT直流减速电机(STM32)
stm32
A9better14 小时前
嵌入式开发学习日志36——stm32之USART串口通信前述
stm32·单片机·嵌入式硬件·学习