STM32第十二节(中级篇):串口通信(第一节)——功能框图讲解

前言

        我们在51单片机中就已经学习过了串口通信的相关知识点,那么我们现在在32单片机上进一步学习通信的原理。我们主要讲解串口功能框图以及串口初始化结构体以及固件库讲解。

STM32第十二节(中级篇):串口通信(第一节)——功能框图讲解


        URAST框图:分为四个部分,分别是引脚,数据寄存器,控制器,波特率。

引脚介绍

        TX:数据发送;

        RX:是数据接收;

        SCLK:时钟,仅同步通信时使用;

        nRTS:请求发送(Request To Send);

        nCTS :允许发送(Clear To Send)。

        引脚必然会对应相对应的GPIO口,我们所学的指南者所对应的GPIO引脚就在下面了,我们发现USART1挂载在APB2总线上,剩下的都在APB1总线上,我们要注意写代码的时候要打开APB1以及APB2总线的时钟。

数据寄存器

        数据寄存器-USART DR:

        9位有效,包含一个发送数据寄存器TDR和一个接收数据寄存器RDR。一个地址对应了两个物理内存。我们通过观察USART_DR的前九位,是由控制寄存器(USART_CH1以及USART_CR2)所控制的。

字长M:

        在由控制寄存器USART_CH1的13位是M(字长),控制着数据字的长度,由软件对其设置和清零。

        0:一个起始位,8个数据位,n个停止位:

        1:一个起始位,9个数据位,n个停止位。

        注意:在数据传输过程中(发送或者接收时),不能修改这个位。

        

停止位(STOP):

        我们观察上图发现,在启动位之后会有数据帧,数据传输结束后会有停止位(STOP);而停止位由控制寄存器USART_CH2决定。

        STOP:停止位(STOP bits)这2位用来设置停止位的位数

        00:1个停止位;

        01:0.5个停止位;

        10:2个停止位;

        11:1.5个停止位;

注:UART4和UART5不能用0.5停止位和1.5停止位。

可能的奇偶校验位:

        位10:

        PCE:检验控制使能(Parity control enable)

        用该位选择是否进行硬件校验控制(对于发送来说就是校验位的产生;对于接收来说就是校验位的检测)。当使能了该位,在发送数据的最高位(如果M=1,最高位就是第9位;如果M=0,最高位就是第8位)插入校验位;对接收到的数据检查其校验位。软件对它置"1或清0’。一旦设置了该位,当前字节传输完成后,校验控制才生效。

        0:禁止校验控制:
        1:使能校验控制。

        位9:

        PS:校验选择(Parity selection)

        当校验控制使能后,该位用来选择是采用偶校验还是奇校验。软件对它置"1或清0’。当前字节传输完成后,该选择生效。

        0:偶校验:

        1:奇校验

        位8:
        PEIE: PE中断使能(PE interrupt enable)该位由软件设置或清除。
        0:禁止产生中断:
        1:当USART_SR中的PE为'1'时,产 生USART中断。

数据发送和接收具体的流程:

        

        我们一步步来,

        UE:USART使能(USART enable)

        当该位被清零,在当前字节传输完成后USART的分频器和输出停止工作,以减少功耗。该位由软件设置和清零。

        0:USART分频器和输出被禁止;

        1:USART模块使能。

        TE:发送使能(Transmitter enable)

        该位使能发送器。该位由软件设置或清除。

        0:禁止发送;
        1:使能发送

        注意:

                1.在数据传输过程中,除了在智能卡模式下,如果TE位上有个0脉冲(即设置为'0'之后再设置为'1’),会在当前数据字传输完成后,发送一个“前导符"(空闲总线)。

                2.当TE被设置后,在真正发送开始之前,有一个比特时间的延迟。

        RE:接收使能(Receiver enable)

        该位由软件设置或清除。

        0:禁止接收;
        1:使能接收,并开始搜寻RX引脚上的起始位。

        

        通过观察功能框图,我们发现具体的流程为:

发送数据:
        UE=1;TE=1

        而数据从CPU或DMA从内存里读取来,然后就会。放到发送数据寄存器(TDR)中,然后转交给发送移位寄存器,然后八位数据一位一位的通过串行的方式传输到TX引脚,表示发送完成。

        在这个过程中,有两个寄存器的位会改变,在TDR中,TXE为空.

        TXE:发送数据寄存器空(Transmit data register empty)

        当TDR寄存器中的数据被硬件转移到移位寄存器的时候,该位被硬件置位。如果USARTCR1寄存器中的TXEIE为1,则产生中断。对USARTDR的写操作,将该位清零。

        0:数据还没有被转移到移位寄存器:
        1:数据已经被转移到移位寄存器。

        注意:单缓冲器传输中使用该位。

        TC:发送完成(Transmission complete)

        当包含有数据的一帧发送完成后,并且TXE=1时,由硬件将该位置"1'。如果USARTCR1中的TCIE为"1’,则产生中断。由软件序列清除该位(先读USART SR,然后写入USART_DR)。TC位也可以通过写入0'来清除,只有在多缓存通讯中才推荐这种清除程序。

        0:发送还未完成:
        1:发送完成。

接收数据:
        UE=1;RE=1

        相反的,接收数据就是先从RX(GPIO口)进入数据,然后转到接收移位寄存器中,再到接收数据寄存器(RDR)中,同时也有位的改变(标志位):

        RXNE:读数据寄存器非空(Read data register not empty)

        当RDR移位寄存器中的数据被转移到USART DR寄存器中,该位被硬件置位。如果USART CR1寄存器中的RXNEIE为1,则产生中断。对USART DR的读操作可以将该位清RXNE位也可以通过写入0来清除,只有在多缓存通讯中才推荐这种清除程序。

        0:数据没有收到;
        1:收到数据,可以读出。

控制器(USART_CRx(1,2,3))

        熟读手册即可,手册可在官网中找到:

野火手册下载icon-default.png?t=N7T8https://doc.embedfire.com/products/link/zh/latest/index.html

波特率

        USART BRR:波特率寄存器。

        

        以下是波特率计算公式:

        

        为了计算出USARTDIV,我们需要知道时钟配置为72M还是别的,然后根据给定的波特率即可计算出USARTDIV的值,计算结果分为整数和小数两个部分,分开计算,小数部分要乘以16达到所计算的值。最后以16进制相加,即可求出结果。

小结

        本节课讲了关于功能框图的讲解,细致的展现了从寄存器到固件库的讲解,下节课将继续代码部分的实操。

        创作不易,点个三连支持一下吧!

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

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

相关文章

漏洞扫描的重要性,如何做好漏洞扫描服务

随着互联网技术的飞速发展,网络安全问题已成为不容忽视的重大挑战。其中,系统漏洞威胁作为最常见且严重的安全危险之一,对组织和个人的信息资产构成了巨大威胁。下面我们就来了解下漏洞扫描的好处、漏洞扫描的操作方法以及如何做好网络安全。…

使用 onBeforeRouteUpdate 组合式函数提升应用的用户体验

title: 使用 onBeforeRouteUpdate 组合式函数提升应用的用户体验 date: 2024/8/15 updated: 2024/8/15 author: cmdragon excerpt: 摘要:本文介绍如何在Nuxt 3开发中使用onBeforeRouteUpdate组合式函数来提升应用用户体验。通过在组件中注册路由更新守卫&#xf…

个人理解—MKCONFIG的常用配置参数与链接脚本

前面的文章说到,编写Makefile文件的常用语句以及相应的语法,但也提到了MKCONFIG去控制Makefile文件的变量实现条件编译,在MKCONFIG过程中,常用的变量配置有例如架构配置、交叉编译工具链配置等,这些选项要么你去通过改…

界面控件DevExpress .NET MAUI v24.1 - 发布TreeView等新组件

DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 今年第一个重要版本v23.1正式发布,该版本拥有众多…

10 个 C# 关键字和功能

在 Stack Overflow 调查中,C# 语言是排名第 5 位的编程语言。它广泛用于创建各种应用程序,范围从桌面到移动设备再到云原生。由于有如此多的语言关键字和功能,对于开发人员来说,要跟上新功能发布的最新信息将是一项艰巨的任务。本…

基于ssm+vue+uniapp的二手物品交易平台小程序

开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…

数据结构--图(Graph)

定义 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成的一种非线性表结构,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 顶点(…

大模型之战-操作数据表-coze

工作流直接操作数据库啦【何时可以直接访问自己的数据库呢】 1,第一步创建一个bot智能体 1.1,bot中创建数据库表: 1.2,智能体可以通过对话,操作表;【增加,筛选查询等】 1.2.1,增加…

C++ 设计模式——模板方法模式

模板方法模式 模板方法模式逐步重构并引入模板方法模式初始实现提取共性并引入模板方法模式实现具体类 完整代码示例模板方法模式的 UML 图UML 图详细介绍 模板方法模式适用于以下场景 模板方法模式 模板方法模式是一种行为设计模式,它定义了一个算法的骨架&#x…

Python(PyTorch)硅光电倍增管和量化感知训练亚光子算法验证

🎯要点 🎯亚光子光神经网络矩阵计算 | 🎯光学扇入计算向量点积 | 🎯表征测量确定不同光子数量下计算准确度 | 🎯训练全连接多层感知器基准测试光神经网络算法数字识别 | 🎯物理验证光学设备设置 | &#x…

美股收涨,半导体板块领涨;苹果iPhone出货预测上调

市场概况 在昨夜的交易中,美股三大股指全线收涨。道琼斯工业平均指数上涨1.39%,纳斯达克综合指数上涨2.34%,标准普尔500指数上涨1.61%。值得注意的是,英伟达股票涨幅近4%,推动了科技股的整体表现。美国十年期国债收益…

RK3576 芯片介绍

RK3576 芯片介绍 RK3576瑞芯微第二代8nm高性能AIOT平台,它集成了独立的6TOPS(Tera Operations Per Second,每秒万亿次操作)NPU(神经网络处理单元),用于处理人工智能相关的任务。此外&#xff0…

数字化转型对金融服务业的影响

数字化转型正在塑造每个行业,从快速消费品到金融,每个行业都受到新兴技术的影响。 那么,数字化转型在金融服务中扮演什么角色?这对招聘前景有何影响? 我们探讨了数字化转型对该行业的影响、其对招聘策略的影响、数据…

【游戏开发】【Unity】如何快速建造人物模型并赋予动画动作

背景 之前介绍了简单将模型从Vroid Studio置入Blender的方法,本篇介绍如何快速将Vroid的模型赋予动画动作。 工艺流程 大致的路线就是用Vroid快速建模,从Maximo上导入骨架动作,最后用Blender将两者结合。 操作方法 在Blender中打开Edit-》Preferences-》Add-ons 搜索关键…

计算机毕业设计选题推荐-springboot 基于SpringBoot的家电销售展示平台

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

网易云音乐故障 2 小时,这次到底谁背锅?(今天记得领补偿)

大家好,我是程序员鱼皮,8 月 19 日下午,网易云音乐突发严重故障,并登顶微博热搜,跟黑神话悟空抢了热度。 根据用户的反馈,故障的具体表现为:用户无法登录、歌单加载失败、播放信息获取失败、无法…

PromptEngineering:ReAct 框架(LangChain 使用的 Agents 框架)

今天介绍 ReAct 框架,前面介绍的提示工程技术除了 CoT 大家可能很少接触到,那么今天的主角会稍有名气。ReAct 是著名工具 LangChain 最主要的代理类型。 ReAct 的全称是《语言模型中的协同推理和同步》[1], 论文名字是《ReAct: Synergizing …

源码构建LAMP

目录 一、安装Apache 二、安装Mysql 三、安装PHP 四、安装论坛 一、安装Apache 1.cd 到opt目录下面,将压缩包拉进Xhell 2.解压缩apr和httpd压缩包 tar xf apr-1.6.2.tar.gz tar xf apr-util-1.6.0.tar.gz tar xf httpd-2.4.29.tar.bz2 3.将apr-1.6.2 移动到ht…

数学建模预测类—【多元线性回归】

每日名言:成名每在穷苦日,败事多因得意时 目录 文章目录 前言 二、参数估计 三、多元线性回归模型和回归系数的检验 四、预测 总结 前言 本文将根据回归建模过程来讲解多元线性回归模型,有关回归分析的知识以及一元线性回归的内容可以戳…

stm32的UART重定向printf()

1配置好uart 2打开usart.c文件 3在此文件前面添加头文件 4在末尾添加重定向代码 添加的代码 /* USER CODE BEGIN 1 *///加入以下代码,支持printf函数,而不需要选择use MicroLIB //#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #if 1 //#pragma import(__use_n…