USART(1)

news2025/1/9 1:14:39

什么是USART

在这里插入图片描述
单片机上有的许多的外设 单片机通过这些外设实现特殊的功能 如果单片机想要和蓝牙模块实现数据的传输那么就也需要单片机有串口模块来和蓝牙模块的串口进行连接 相互传输数据 在单片机上的串口就叫USART USART就是单片机上的外设 来实现串口之间的通信功能
USART名字的含义在这里插入图片描述
一般用的异步模式比较多 最右边的UART就是不支持同步的模式 仅支持异步模式 RTS和CTS是流控信号的发送和接受 (串口的笔记有讲) RT表示可发送和接受数据

如何使用USART

USART是串口 用来发送数据和接受数据 通常知道CPU是程序运行的地方 实际的功能是通过片上外设来实现的 如何在CPU和USART建立联系呢? 就是通过寄存器组
在这里插入图片描述

当我们想要发送数据时 就先把想要发送的数据写入发送数据寄存器中 然后发送数据寄存器会把发送的数据通过TX引脚发送出去
接收数据也是如此 先把要接受的数据通过RX引脚解析然后放入接收寄存器中 通过程序读取到CPU中
在这里插入图片描述

USART的工作原理

什么是串并转换
在这里插入图片描述
如果要发送一个8个bit的数据 串行就一个一个bit的发送通过一根线 而并行就是同一时间一次性发送8个bit位 串行转并行和并行转串行如图所示
在这里插入图片描述
在数据的传送中先把数据一次性8个bit位写入发送数据寄存器 然后转串行通过TX引脚发送出去
数据也是串行进来需要转换为并行一次性读取8个位 需要串行转并行
移位寄存器
在这里插入图片描述
移位寄存器每动作一次比特位就向右移动一位
串转并电路
在这里插入图片描述
并行写入数据 01011010(0x5a)然后串行通过TX口输出 还是串口的输出规则LSB位输出 先传数据最低有效位转换为01011010输出
在这里插入图片描述
串行数据传入然后并行读取
USART的基本模型
在这里插入图片描述
红圈和篮圈分别代表的是并转串电路和串转并电路
如CPU上方就是要发送的数据 写入 发送数据寄存器通过并转串电路通过TX引脚发送出数据
CPU下方的变量A是用来读取接收数据寄存器中的数据的

USART

USART的基本框图
在这里插入图片描述
绿框代表着串行转并行或者并行转串行的电路图 右侧灰色的发送和接收控制电路对外部输出波形 辨析外部传进来的波形
其实这整张图描绘的是USART的寄存器组
CR配置寄存器(黄色的寄存器)用来配置参数的在串口传输数据都是以数据帧的形式传输 那么设置几位数据位 是否使能校验位 使用奇校验还是偶校验 停止位的长度 等等都是在配置寄存器中来配置的
SR寄存器就是粉色的寄存器 就是读取USART的状态的 在发出数据的过程中把数据写入发送数据寄存器通过并行转串行电路把数据一位一位的发送出去 那么我们如何知道数据何时发送出去呢? 那么就查询SR寄存器 当SR寄存器的某个bit位为1就表示数据发送完成才可以重新写入数据
读取数据也是如此当某个bit位为1才可以去读取数据
BRT寄存器 表示传输数据的速度是快还是慢 就是每秒钟发送码元的个数
IER寄存器 中断使能寄存器 对于USART不仅可以普通模式进行编程还可以用中断模式进行编程

USART的参数配置

1.数据帧格式的设置(CR寄存器)
在这里插入图片描述
相应参数的设置如图所示
数据传输方向的选择 在这里插入图片描述
通过软件的编程向CR配置寄存器对应的bit位写入对应的值就可以关闭或者打开TX和RX开关 来完成数据的传输方向选择

波特率的设置


波特率产生的原理
在这里插入图片描述
移位寄存器每次活动都数据都移位一次 输出一个码元 那么如果可以控制移位寄存器的活动速率那么就可以控制码元输出的速率 而移位寄存器活动的速率就是脉冲信号的速率 看时钟 当时钟的上升沿到来时移位寄存器就活动一次 控制时钟的频率控制(脉冲信号)的频率就可以控制移位寄存器的活动速率 从而控制输出的码元速度 从而控制波特率
任务就转移到了如何去控制脉冲信号在这里插入图片描述
在单片机使用外设之前都要开启时钟 UASRT也是一个外设也要开启时钟 那么就要控制时钟来控制波特率 但是时钟的频率都是固定的 就要通过分频(控制不同的分频数)来控制波特率
具体电路在这里插入图片描述
那么具体的电路图对应就是这个灰色的框对应着分频系数再通过波特率的寄存器输出我们想要得到的波特率
在这里插入图片描述
要使得72mhz输出波特率9600 就要使得分频器和16相乘得到7500的分频系数 就要使得分频器的分频系数为468.75 通过设置波特率寄存器得到
在这里插入图片描述
总电路图
在这里插入图片描述
USART的总开关
在这里插入图片描述
练习在这里插入图片描述

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

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

相关文章

ROS服务(Service)通信:通信模型、Hello World与拓展

服务通讯是基于请求响应模式的,是一种应答机制。 用于偶然的、对时时性有要求、有一定逻辑处理需求的数据传输场景。 一、服务通讯模型 服务是一种双向通讯方式,它通过请求和应答的方式传递消息,该模型涉及到三个角色: Master…

74基于matlab的PSO-ELM的多输入,单输出结果预测,输出训练集和测试机预测结果及误差。

基于matlab的PSO-ELM的多输入,单输出结果预测,输出训练集和测试机预测结果及误差,适应度值。数据可更换自己的,程序已调通,可直接运行。 74matlabPSO-ELM多输入单输出 (xiaohongshu.com)

Redis实战篇(1)

实战篇Redis 短信登录 这一块我们会使用redis共享session来实现 商户查询缓存 通过本章节,我们会理解缓存击穿,缓存穿透,缓存雪崩等问题,让小伙伴的对于这些概念的理解不仅仅是停留在概念上,更是能在代码中看到对应…

AMEYA360:罗姆旗下蓝碧石面向电动汽车开发出AVAS专用的语音合成LSI

罗姆集团旗下的蓝碧石科技株式会社(以下简称“蓝碧石科技”)面向电动汽车(xEV)开发出AVAS(车辆接近报警系统)专用的语音合成LSI“ML22120xx”(ML22120TB、ML22120GP)。 在推动实现碳中和(无碳)社会的进程中,混合动力汽车和纯电动汽车(EV)的数量不断增加。由于这些车…

Flutter笔记: 在Flutter应用中使用SQLite数据库

Flutter笔记 在Flutter应用中使用SQLite数据库(基于sqflite) 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/q…

人工智能引领环境保护的新浪潮:技术应用及其影响

在全球范围内,环境保护已经成为一个迫切的话题。随着人工智能技术的发展,它开始在环境保护领域扮演越来越重要的角色。AI不仅能够帮助更有效地监测环境变化,还能提出解决方案来应对环境问题。 污染监测与控制: AI系统可以分析来自…

【C语言】深入解开指针(三)

🌈write in front :🔍个人主页 : 啊森要自信的主页 真正相信奇迹的家伙,本身和奇迹一样了不起啊! 欢迎大家关注🔍点赞👍收藏⭐️留言📝>希望看完我的文章对你有小小的帮助&#x…

企业云盘:企业文件数据存储与共享的全面解决方案

企业云盘为企业的文件数据的存储与管理提供了一种安全、高效又便捷的解决方案。在企业文件数据存储管理上,企业云盘有什么优势吗?本文将重点分析企业云盘的优点和好处! 一、安全性 对于企业文件数据管理工具,安全是首位。与个人…

【源码系列】短剧系统开发国际版短剧系统软件平台介绍

系统介绍 短剧是一种快节奏、紧凑、有趣的戏剧形式,通过短时间的精彩表演,向观众传递故事的情感和思考。它以其独特的形式和魅力,吸引着观众的关注,成为了当代戏剧娱乐中不可或缺的一部分。短剧每一集都是一个小故事,…

【Java 进阶篇】深入浅出:JQuery 事件绑定的奇妙世界

在前端的世界里,事件是不可或缺的一部分。用户的点击、输入、滚动等行为都触发着各种事件,而如何在代码中捕捉并处理这些事件是每位前端开发者必须掌握的技能之一。本文将带你深入浅出,探索 JQuery 中的事件绑定,为你揭开这个奇妙…

IIC总线概述和通信时序代码详细图文解析

IIC总线 1 IIC总线概述 I2C总线两线制包括:串行数据SDA(Serial Data)、串行时钟SCL(Serial Clock)。总线必须由主机(通常为微控制器)控制,主机产生串行时钟(SCL&#x…

【漏洞复现】用友移动管理系统文件上传

漏洞描述 用友移动系统管理旧版本uploadApk接口存在任意文件上传,攻击者可在无需登录的情况下上传恶意文件,执行任意命令 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社…

基于模拟退火算法优化概率神经网络PNN的分类预测 - 附代码

基于模拟退火算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于模拟退火算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于模拟退火优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

redis运维(十一) python操作redis

一 python操作redis ① 安装pyredis redis常见错误 说明:由于redis服务器是5.0.8的,为了避免出现问题,默认最高版本的即可 --> 适配 ② 操作流程 核心:获取redis数据库连接对象 ③ Python 字符串前面加u,r,b的含义 原因: 字符串在…

使用 SMI 指标增强股票分析:amCharts JS Crack

使用 SMI 指标增强股票分析 2023 年 11 月 16 日 amCharts 5:股票图表 v5.5.3 增加了对随机动量指数指标的支持,帮助用户做出更明智的交易决策。 amCharts 5:股票图表提供了用于显示基于时间的数据的分析工具,无论是金融、股票还是…

【MySQL】聚合函数:汇总、分组数据

文章目录 学习目标MAX()、MIN()、AVG()、SUM()、COUNT()COUNT(*) 得到所有记录条目DISTINCT去重练习1(使用UNION , SUM, BETEEN AND)GROUP BY子句练习2(使用sum,group by, join on, …

NET8 ORM 使用AOT SqlSugar

.NET AOT8 基本上能够免强使用了, SqlSugar ORM也支持了CRUD 能在AOT下运行了 Nuget安装 SqlSugarCore 具体代码 StaticConfig.EnableAot true;//启用AOT 程序启动执行一次就好了//用SqlSugarClient每次都new,不要用单例模式 var db new SqlSugarClient(new ConnectionC…

【Nuxt】Nuxt3 动态导入图片 src

nuxt3 不再支持 require 动态导入资源,因此需要我们将图片放到 public 目录下,这样我们就可以动态导入了 比如下面 👇: 感谢 Nuxt3遇见的坑(四):图片动态渲染之后打包路径问题以及打包css样式…

MySQL5.7安装详细过程--window系统

1、Window安装MySQL5.7详细过程 1.1、下载MySQL5.7安装包 下载地址:https://downloads.mysql.com/archives/community/ 1.2、将文件解压到盘符中 你可以解压到你想解压的位置,放在C或其他盘符都可以。 我放在了C盘中:C:\Program Files\my…

视频一键转码:批量转换MP4视频的技巧

随着数字媒体设备的普及,视频文件在生活中扮演着越来越重要的角色。而在处理视频文件时,有时需要将其转换为不同的格式以适应不同的需求。其中,MP4格式因其通用性和高质量而备受青睐。本文详解云炫AI智剪如何一键转码的技巧,帮助批…