STM32F1学习——USART串口通信

news2025/2/11 15:33:17

 一、USART通用同步异步收发机

        USART的全称是Universal Synchronous/Asynchronous Receiver Transmitter , 通用同步异步收发机,但由于他主要以异步通信为主,所以他也叫UART。它遵循TTL电平标准,是一种全双工异步通信标准,主要是是点对点模式。 (TTL电平标准是+3.3V+5V表示10V表示0)

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

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

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

        可选校验位(无校验/奇校验/偶校验)。

        UART有一些重要的参数:

        ① 波特率 : 串口通信的速率。

        ② 起始位: 标志一个数据帧的开始,固定为低电平。

        ③ 数据为: 数据帧的有效载荷,1为高电平,0为低电平,低位先行。

        ④ 校验位: 用于数据验证,根据数据位计算得来。

        ⑤ 停止位: 用于数据帧间隔,固定位高电平。

二、UART的电路结构

        这张图我们其实得从最下面的部分开始看起,最下面时生成波特率的部分,这里的计算公式是 波特率 = fPCLK2/1 / (16 * DIV),这里需要注意USART1是APB2高速时钟总线上的,而USART2、USART3是低速APB1总线上的。他们通过发送和接收控制,控制数据低位先行的传输和读取。

        中间部分为状态寄存器和配置的寄存器,主要是配置中断,多机串口通信,硬件流控制,nRTS(为输出,我可以开始接收了)和nCTS为输入(为输入,我可以开始发了),右边的SCLK是用来兼容其他的协议的,是一个同步时钟。

        左边和上面是本次的重点,左边是TX 和 RX的输入线,其他的为IrDA 和 SIR等功能的。而发送数据寄存器和发送移位寄存器就是用来发送数据的,数据先写到发送数据寄存器,当移位寄存器为空的时候,发送寄存器的数据转到移位寄存器,同时置起TXE。接收一样,位移寄存器接收到1位后,传给接收数据寄存器,同时置起标志位RXNE。

        下面这张图是简化图,用于配置UART的。

三、接收的噪声处理

        当出现起始型号的时候,单片机会根据波特率继续接收接下来的一个数据,首先在检测到下降沿的时候会认为是起始信号,接下来的2-7个波特率中采样的要都是0的数量在3个或以上才认为是低,同时如果不全是0会置起标志位NE表示有噪声。同时在8 9 10个波特率时钟时读取电平的高低,这里也是2:1的原则,如果两个0就表示低,但是为置起NE标志位。

        这也是为什么 : 波特率 = fPCLK2/1 / (16 * DIV) 中有16 , 因为要对每一位数据进行16次检查。

四、代码

        本次实验使用电脑串口发送一个数据,STM32接收到数据后显示在OLED上。①开启USART和GPIO的时钟。②配置GPIO和USART并初始化。 ③根据查询和中断两种方式读数据,本次展示的是中断。④打开USART。

        为了节省文章篇幅,代码已经放在github仓库里了。hal库的暂未更新,请耐心等待。

STM32F103c8t6_learning/GPIO_std/STM32f1_UART at main · Jiang-kun02/STM32F103c8t6_learning

五、参考

[9-1] USART串口协议_哔哩哔哩_bilibili

[9-2] USART串口外设_哔哩哔哩_bilibili

[9-3] 串口发送&串口发送+接收_哔哩哔哩_bilibili

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker 部署 MinIO | 国内阿里镜像

一、导读 Minio 是个基于 Golang 编写的开源对象存储套件,基于Apache License v2.0开源协议,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用,例如 NodeJS、Redis、MySQL等。 二、…

【R语言】相关系数

一、cor()函数 cor()函数是R语言中用于计算相关系数的函数,相关系数用于衡量两个变量之间的线性关系强度和方向。 常见的相关系数有皮尔逊相关系数(Pearson correlation coefficient)、斯皮尔曼秩相关系数(Spearmans rank corre…

DeepSeek-R1技术报告快速解读

相关论文链接如下: DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language ModelsDeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 文章目录 一、论文脑图二、论文解读2.1 研究背景2.2 研究方法2.3 …

基于SpringBoot+Vue实现航空票务管理系统

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,…

让文物“活”起来,以3D数字化技术传承文物历史文化!

文物,作为不可再生的宝贵资源,其任何毁损都是无法逆转的损失。然而,当前文物保护与修复领域仍大量依赖传统技术,同时,文物管理机构和专业团队的力量相对薄弱,亟需引入数字化管理手段以应对挑战。 积木易搭…

java项目之美妆产品进销存管理系统的设计与开发源码(ssm+mysql)

项目简介 美妆产品进销存管理系统的设计与开发实现了以下功能: 美妆产品进销存管理系统的设计与开发的主要使用者分为管理员登录后修改个人的密码。产品分类管理中,对公司内的所有产品分类进行录入,也可以对产品分类进行修改和删除。产品管…

保姆级教程Docker部署Zookeeper模式的Kafka镜像

目录 一、安装Docker及可视化工具 二、Docker部署Zookeeper 三、单节点部署 1、创建挂载目录 2、运行Kafka容器 3、Compose运行Kafka容器 4、查看Kafka运行状态 5、验证生产消费 四、部署可视化工具 1、创建挂载目录 2、Compose运行Kafka-eagle容器 3、查看Kafka-e…

idea插件开发dom4j报错:SAXParser cannot be cast to class org.xml.sax.XMLReader

手打不易,如果转摘,请注明出处! 注明原文:https://blog.csdn.net/q258523454/article/details/145512328 dom4j报错 idea插件使用到了dom4j依赖,但是报错: I will print the stack trace then carry on…

【Go语言圣经】第八节:Goroutines和Channels

DeepSeek 说 Goroutines 和 Channels 最近非常流行询问DeepSeek某些相关概念或热点的解释,因此在开始系统性地学习《Go语言圣经》之前,我首先向DeepSeek进行了提问。具体的Prompt如下: 有关Golang当中的Goroutines和Channels,我现…

第3章 使用 Vue 脚手架

第3章 使用 Vue 脚手架 3.1 初始化脚手架3.1.1 说明3.1.2. 具体步骤3.1.3 分析脚手架结构1 总结2 细节分析1 配置文件2 src文件1 文件结构分析2 例子 3 public文件4 最终效果 3.2 ref属性3.3 props配置项3.4 mixin混入3.5 插件3.6 scoped样式3.7 Todo-list 案例3.7.1 组件化编码…

XILINX硬件设计-(1)LVDS接口总结

1.LVDS差分信号电路原理 LVDS指的是低压差分信号,是一种电平标准。 差分信号在串行通信中有着非常广泛的应用,典型应用有PCIE中的gen1,gen2,gen3,gen4,gen5,SATA接口,USB接口等。 …

单张照片可生成写实3D头部模型!Adobe提出FaceLift,从单一的人脸图像中重建出360度的头部模型。

FaceLift是Adobe和加州大学默塞德分校推出的单图像到3D头部模型的转换技术,能从单一的人脸图像中重建出360度的头部模型。FaceLift基于两阶段的流程实现:基于扩散的多视图生成模型从单张人脸图像生成一致的侧面和背面视图;生成的视图被输入到GS-LRM重建器中,产出详细的3D高斯表…

【AI】DeepSeek知识类任务和推理能力均表现优秀

2024 年 12 月 26 日,杭州深度求索(DeepSeek AI)发布 DeepSeek-V3 并同步开源,据介绍,DeepSeek-V3 多项评测成绩超越了 Qwen2.5-72B 和 Llama-3.1-405B 等其他开源模型,并在性能上和世界顶尖的闭源模型 GPT…

编程领域的IO模型(BIO,NIO,AIO)

目前对于市面上绝大多数的应用来说,不能实现的业务功能太少了。更多的是对底层细节,性能优化的追求。其中IO就是性能优化中很重要的一环。Redis快,mysql缓冲区存在的意义。都跟IO有着密切关系。IO其实我们都在用,输入输出流这块。…

DeepSeek为何能爆火

摘要:近年来,DeepSeek作为一款新兴的社交媒体应用,迅速在年轻人群体中走红,引发了广泛关注。本文旨在探讨DeepSeek为何能在短时间内爆火,从而为我国社交媒体的发展提供参考。首先,通过文献分析,…

【AIGC】语言模型的发展历程:从统计方法到大规模预训练模型的演化

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯语言模型的发展历程:从统计方法到大规模预训练模型的演化1 统计语言模型(Statistical Language Model, SLM):统…

【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战

【04】Java若依vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战 项目背景 本项目经费43000元,需求文档如下,工期25天,目前已经过了8天,时间不多了&#x…

机器学习:朴素贝叶斯分类器

贝叶斯决策论是概率框架下实施决策的基本方法,对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。 贝叶斯定理是贝叶斯决策论的基础,描述了如何根据新的证据更新先验概率,贝叶斯定理&…

DeepSeek 大模型每个版本的特点以及运用场景对比

deepseek 网页地址:DeepSeek | 深度求索 1. DeepSeek-V1 发布时间:2024年1月 参数规模:预训练数据量2TB,具体参数未明确公开,推测为数十亿级别 功能特点: 编码能力:支持多种编程语言(如Python、Java、C++),可生成高质量代码框架。 长上下文处理:支持128K上下文窗口,…

【Langchain学习笔记(一)】Langchain介绍

Langchain介绍 Langchain介绍前言1、Langchain 是什么2、为什么要用 Langchain3、Langchain 的核心4、Langchain 的底层原理5、Langchain 的应用场景 Langchain介绍 前言 想象一下,如果你能让聊天机器人不仅仅回答通用问题,还能从你自己的数据库或文件…