STM32-串口通信波特率计算以及寄存器的配置详解

您好,我们一些喜欢嵌入式的朋友一起建立的一个技术交流平台,本着大家一起互相学习的心态而建立,不太成熟,希望志同道合的朋友一起来,抱歉打扰您了QQ群372991598

串口通信基本原理
处理器与外部设备通信的两种方式
并行通信
传输原理:数据各个位同时传输。

优点:速度快
缺点:占用引脚资源多

串行通信
传输原理:数据按位顺序传输
优点:占用引脚资源少
缺点:速度相对较慢

按照数据传送方向,分为:

单工:数据传输只支持数据在一个方向上传输;
半双工:允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;
全双工:允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。

串行通信的通信方式

同步通信:带时钟同步信号传输。如SPI,lIC通信接口
异步通信:不带时钟同步信号。如UART(通用异步收发器),单总线

常见串行通信接口
在这里插入图片描述
STM32的串口通信接口
UART:通用异步收发器

USART:通用同步异步收发器

大容量STM32F10x系列芯片,如STM32F103ZET6,包含3个USART和2个UART

可以在芯片的数据手册中查到各串口所接的引脚
在这里插入图片描述
UART异步通信方式特点
全双工异步通信;
分数波特率发生器系统,提供精确的波特率;
发送和接收共用的可编程波特率,最高可达4.5Mbits/s;
可编程的数据字长度(8位或者9位);
可配置的停止位(支持1或者2位停止位);
可配置的使用DMA多缓冲器通信;
单独的发送器和接收器使能位;
检测标志:1.接收缓冲器 2.发送缓冲器空 3.传输结束标志
多个带标志的中断源。触发中断。
其他:校验控制,四个错误检测标志。
串口通信过程
在这里插入图片描述
STM32串口异步通信需要定义的参数
当通信线路上电平状态为1,表示当前线路上没有数据传送,串口处于空闲。

1.起始位:先发出一个逻辑"0"的信号,表示传输字符的开始。

2.数据位(8位或者9位):紧接着起始位之后,数据位的个数可以是4、5、6、7、8等,构成一个字符,从最低位开始传送。

3.奇偶校验位(第9位):数据位加上这一位后,使得"1"的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。可有可无,CRC校验更准确

4.停止位(1,15,2位):它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

5.波特率设置

波特率是每秒钟传输的比特位,一般为4800、9600、115200,波特率越大,则数据传输速度越快,但这样就需要接收端也要快速的接收,同时容易受到干扰;波特率越小则传输越慢,抗干扰能力加强;

一般工业领域使用9600比较多,如果是单片机与模块之间的通信,如WiFi模块,则用115200,能及时通信
常用的串口相关寄存器
USART_SR状态寄存器

USART_ DR数据寄存器

USART_BRR波特率寄存器

寄存器的详细描述在stm32中文参考手册中25.6节USART寄存器描述中可以查看到

波特率计算方法
在STM32中文参考手册的USART框图中,这一部分是波特率设置示意图
在这里插入图片描述

在这里插入图片描述
上式中,fPCLKx是给串口的时钟(PCLK1用于USART2、3、4、5,PCLK2用于USART1);USARTDIV是一个无符号定点数。我们只要得到USARTDIV的值,就可以得到串口波特率寄存器USART1->BRR的值,反过来,我们得到USART1->BRR的值,也可以推导出USARTDIV的值。但我们更关心的是如何从 USARTDIV的值得到USART_BRR的值,因为一般我们知道的是波特率,和 fPCLKx的时钟,要求的就是USART_BRR的值。
只有USART1使用PCLK2(最高72MHz),其它USART使用PCLK1(最高36MHz)。
参考手册中的波特率计算表
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/637097.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

flume使用实例

1、监听端口a1.sources.r1.type netcat 配置文件nc-flume-console.conf # Name the components on this agent a1 表示jvm进程名 a1.sources r1 a1.sinks k1 a1.channels c1 # Describe/configure the source a1.sources.r1.type netcat a1.sources.r1.bind node…

《王者荣耀》4月狂揽2.34亿美元 单日流水1亿美元 全球销量第二

易采游戏网5月24日消息,在刚刚过去的四月,全球手游市场迎来了一场收益的盛宴,其中《王者荣耀》以其惊人的吸金能力,以2.34亿美元的月收入在全球手游排行榜上位列第二。4月5日,这款由腾讯游戏开发的多人在线战斗竞技游戏…

软考考前前怎么复习?

有一些经验,可以和大家分享一下。 软考的考试内容 软考包含许多科目,共分为五大类,27个专业。 软考的等级不同,考试内容也有所不同。初级和中级考试只包括两门科目,而高级则需要考三门科目。每门科目满分75分&#x…

knife4j-swagger

文章目录 knife4j-swagger第 1 步:引入 jar 包第 2 步:添加注释来开启 knife4j第 3 步:验证问题解决新增功能:ApiOperationSupport 注解新增功能:DynamicParameters 注解忽略参数属性 knife4j-swagger knife4j 是 Swa…

W801 实现获取天气情况

看了小安派(AiPi-Eyes 天气站)的源码,感觉用W801也可以实现。 一、部分源码 main.c #include "wm_include.h" #include "Lcd_Driver.h"void UserMain(void) {printf("\n user task \n");Lcd_Init();Lcd_Clea…

Qt官方示例---opengl

文件相对路径:Examples\Qt-5.9.1\opengl 2dpainting cube computegles31 contextinfo hellogl2 hellowindow paintedwindow qopenglwidget qopenglwindow textures threadedqopenglwidget

VirtualBox设置共享文件夹,用于在Window11 和 Ubuntu22 中共享文件,2024亲测可用

VirtualBox设置共享文件夹,用于在Window11 和 Ubuntu22 中共享文件,2024亲测可用 Windows操作 1、新建文件夹,用于共享 Linux操作 1、添加共享文件夹 共享文件夹路径:选择Windows系统中你需要共享的文件夹 共享文件夹名称&am…

ROS2入门21讲__第07讲__节点:机器人的工作细胞

目录 前言 通信模型 案例一:Hello World节点(面向过程) 运行效果 代码解析 创建节点流程 案例二:Hello World节点(面向对象) 运行效果 代码解析 创建节点流程 案例三:物体识别节点 …

小蓝和小青在做数字破解游戏

小蓝和小青在做数字破解游戏,设某图案由m*n的0和1点阵组成,依照以下规则破解连续一组数值,从点阵图第一行第一个符号开始计算,从左到右,由上至下。第一个数表示连续有几个0,第二个数表示接下来连续有几个1,…

Nuxt3 实战 (七):配置 Supabase 数据库

前言 这个章节我们要先把数据库的环境配置好,古人云:工欲善其事,必先利其器。 这两天我一直在网上寻找最适合 Nuxt 的数据库,之前在做个人项目时经常用的是 Mysql 和 MongoDB,也用过 ORM 框架比如:Sequel…

flutter webview加载本地文件出现跨域解决方案

一直报错 [INFO:CONSOLE(17)] "Access to image at file:///android_asset/flutter_assets/assets/jump/box_bottom.png from origin null has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome…

留学服务平台应用架构的设计与优化

随着全球化进程的加速和人们对国际化教育的需求不断增长,留学服务平台在满足学生留学需求的同时也面临着诸多挑战。在这样的背景下,设计一个高效、稳定且安全可靠的留学服务平台应用架构显得尤为重要。本文将就留学服务平台应用架构的设计与优化进行探讨…

JKTECH柔性振动盘用途

柔性振动盘的作用与用途 在现代工业自动化领域,柔性振动盘凭借其独特的功能和广泛的应用场景,正逐渐成为生产线上的重要工具。柔性振动盘,又称柔性供料器,它结合了传统振动盘的高效性和现代自动化技术的灵活性,为各种…

vulhub——Aria2、bash、catic

文章目录 一、Aria2 任意文件写入漏洞二、CVE-2014-6271(Bash Shell 漏洞)三、CVE-2022-46169(Cacti 前台命令注入漏洞) 一、Aria2 任意文件写入漏洞 Aria2是一个命令行下轻量级、多协议、多来源的下载工具(支持 HTTP…

【MySQL精通之路】InnoDB(10)-行格式

目录 1.表数据结构 1.1 聚集索引数据结构 1.2 辅助索引数据结构 2.行格式 2.1 REDUNDANT行格式 2.2 REDUNDANT存储特性 2.3 COMPACT行格式 2.4 COMPACT存储特性 2.5 DYNAMIC行格式 2.6 DYNAMIC存储特性 2.7 COMPRESSED行格式 2.8 COMPRESSED存储特性 3.定义表格的…

我怎么使用AI大语言模型学英语

今天已经是我开始英语拉练任务的第39天了,一直在笃定的、雷打不动的、机械笨拙的重复做一件事,那就是使用AI工具,将我想要说的话翻译成英文,生成语音文件,每天朗读三小时,最终整个背下来。我也在思考&#…

【人工智能】数据分析与机器学习——泰坦尼克号(更新中)

1912年4月15日,泰坦尼克号在首次航行期间撞上冰山后沉没,船上共有2224名乘客和乘务人员,最终有1502人遇难。沉船导致大量伤亡的重要原因之一是,没有足够的救生艇给乘客和船员。虽然从这样的悲剧性事故中幸存下来有一定的运气因素&…

Aware接口作用

介绍 Aware(感知)接口是一个标记,里面没有任何方法,实际方法定义都是子接口确定(相当于定义了一套规则,并建议子接口中应该只有一个无返回值的方法)。 我们知道spring已经定义好了很多对象,如…

半导体测试基础 - 基本概念

随着芯片集成度越来越高,手动测试已无法满足需求,因此要用到自动化测试设备(ATE,Automated Test Equipment)。因为现在的芯片原来越复杂,普通的 Bench 测试没法满足需求。ATE 可检测集成电路功能之完整性&a…

Joomla 3.7.0 (CVE-2017-8917) SQL注入漏洞环境

1 漏洞概述 Joomla是一个基于PHP的内容管理系统(CMS),广泛应用于各类网站。2017年,Joomla 3.7.0版本被发现存在SQL注入漏洞(CVE-2017-8917),攻击者可以利用该漏洞对数据库进行未授权查询或操作…