当前位置: 首页 > news >正文

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


http://www.mrgr.cn/news/62638.html

相关文章:

  • CSS伪元素以及伪类和CSS特性
  • Python飞舞蝙蝠
  • 第十九章 Vue组件之data函数
  • 探秘 Feign 核心注解:@FeignClient 和 @EnableFeignClients 是如何打通微服务通信的 “任督二脉” 的?
  • 图书管理系统汇报
  • Java如何使用分治法求最大值、最小值的应用分析?
  • Linux:线程池
  • qt QSlider详解
  • 软设每日打卡——折半查找二叉判定树、平衡二叉树
  • 多线程案例---单例模式
  • 2024年NSSCTF秋季招新赛-WEB
  • Convolution 卷积
  • 前端笔面试查漏补缺
  • 鸿蒙系统:核心特性、发展历程与面临的机遇与挑战
  • JSP水果商城管理系统WEB项目
  • Vue中path和component属性
  • 宠物空气净化器是否有用?五大高性价比宠物空气净化器种草推荐
  • 前端如何安全存储密钥,防止信息泄露
  • 高级SQL技巧:优化查询与提升性能(附11个示例代码)
  • #HarmonyOS:名词
  • Leetcode 198. 打家劫舍 动态规划
  • 拆分PPOCRLabel标注的数据集并生成识别数据集
  • 动态规划-回文串问题——647.回文子串
  • Python使用 try-except 捕获与处理异常
  • 从安装到实战:Spring Boot与RabbitMQ的终极整合指南
  • Go 语言解析 yaml 文件的方法