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

17、江科大stm32视频学习笔记——USART串口协议和USART串口外设

目录

1、通信接口

2、 硬件电路

3、电平标准

4、串口参数及时序

5、USART简介

 6、USART工作

(1)写操作

(2)读操作

(3)帧头和帧尾的添加和除由电路自动执行

(4)硬件数据控制流

(5)中断输出控制(USART)

(6)波特率发生器

 7、USART基本结构

 8、数据帧

 9、波特率发生器


1、通信接口

通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统
通信协议:制定通信的规则,通信双方按照协议规则进行数据收发

 异步:需要双方约定一个频率

2、 硬件电路

简单双向串口通信有两根通信线(发送端TX和接收端RX
TXRX要交叉连接
当只需单向的数据传输时,可以只接一根通信线
当电平标准不一致时,需要加电平转换芯片

 

 两个设备之间的GND一定要接在一起,但是VCC可以各自接

3、电平标准

TTL电平:+3.3V+5V表示10V表示0
RS232电平:-3~-15V表示1+3~+15V表示0
RS485电平:两线压差+2~+6V表示1-2~-6V表示0(差分信号)

4、串口参数及时序

波特率:串口通信的速率
速率的参数就是波特率,波特率就是每秒传输码元的个数,单位是码元/s(baud)
比特率:每秒传输的比特数,单位是bit/s,或者是bps
在二进制的情况下,一个码元及时一个bit,此时波特率等于比特率
起始位:标志一个数据帧的开始,固定为低电平
数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行
校验位:用于数据验证,根据数据位计算得来
停止位:用于数据帧间隔,固定为高电平

  • 字节装载在数据帧中,数据帧由起始位、数据位、停止位组成
  • 数据位有8个,代表一个字节的8位置,可以在最右边加一个奇偶校验位,则数据位总共是9位。接收方在接收数据后,会验证数据位和校验位
  • 若规定发送的波特率是1000bps,表示1s要发1000位,每一位的时间就是1ms,发送方每隔1ms发送一位,接收方每隔1ms接受一位,决定了每隔多久发送一位
  • 空闲状态下,起始位为高电平,起始位给低电平,使其产生下降沿,表示数据帧要开始

5、USART简介

USART:通用同步/异步收发器
USARTSTM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,存放在数据寄存器里.
自带波特率(一般设置为9600/115200)发生器,最高达4.5Mbits/s
可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2
可选校验位(无校验/奇校验/偶校验)
支持同步模式、硬件流控制、DMA、智能卡、IrDALIN
同步模式:多了个时钟CLK的输出
STM32F103C8T6 USART资源: USART1(APB2总线上的设备) USART2(APB1) USART3(APB1)

 6、USART工作

(1)写操作

当数据移位完成后,数据会立刻自动从TDR发送移位寄存器

TDR和移位寄存器的双重缓存,保证在连续发送数据时,数据帧之间不会有空闲,提高了工作效率

(2)读操作

 因为串口协议规定是低位先行,所以接收移位寄存器时从高位往低位方向移动

(3)帧头和帧尾的添加和除由电路自动执行

(4)硬件数据控制流

A向B发送数据,当A一直发,B处理不过来;
若无硬件控制流,B只能抛弃新数据或者覆盖元数据;
有硬件控制流,硬件电路上会多出一条线,B没准备好置高电平,准备好置低电平;
A收到B的反馈决定数据发送,防止因为B处理慢而导致数据丢失。

 能接收的时候,RTS就置低电平,请求对方发送,对方的CTS接收到后,就可以一直发

处理不过来时,RTS就置高电平,对方的CTS接收到后,就会暂停发送

(5)中断输出控制(USART)

 TXE发送寄存器空,RXNE接收寄存器非空,是判断发送状态和接收状态的必要标志位
 中断输出控制就是配置中断是不是能通向NVIC

(6)波特率发生器

  

波特率发生器是分频器,APB时钟进行分频,得到发送和接收移位的时钟

时钟输入时fPCLKx(x=1或2),USART1挂载在APB2,所以就是PCLK2的时钟,为72M

其他的USART挂载在APB1,就是PCLK1的时钟,为36M

之后对时钟进行分频,除以USARTDIV的分频系数,分频后再除以16,得到发送器时钟和接收器时钟,通向控制部分

若TE=1,发送器使能,发送部分的波特率就有效

若RE=1,接收器使能,接收部分的波特率有效

 7、USART基本结构

 8、数据帧

 有8位字长和9位字长,分别可以选择有校验和无校验

 9位建议有校验,8位建议无校验

 停止位有0.5,1,1.5,2,建于选择1位

9、波特率发生器

发送器和接收器的波特率由波特率寄存器BRR里的DIV确定
计算公式:波特率 = fPCLK2/1 / (16 * DIV)//内部有16倍波特率的采样时钟 

配置USART1为9600的波特率
9600=72M(USART1的时钟)/(16*DIV)
DIV=72M/9600/16=468.75(二进制:11101 0100.11)
用库函数配置,需要多少波特率直接写就行

相关文章:

17、江科大stm32视频学习笔记——USART串口协议和USART串口外设

目录 1、通信接口 2、 硬件电路 3、电平标准 4、串口参数及时序 5、USART简介 6、USART工作 (1)写操作 (2)读操作 (3)帧头和帧尾的添加和除由电路自动执行 (4)硬件数据控制…...

leetcode:有效地括号

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都…...

四等分list

Testpublic void s (){ int targ 4; List mList new ArrayList(); List<List> mEndList new ArrayList<>(); for (int i 0; i <34; i) { mList.add(“item” i); } // System.out.println(mList.toString()); if (mList.size() % targ ! 0) { for (int j …...

php连接sqlserver数据库

docker 安装sqlserver数据库sudo docker pull mcr.microsoft.com/mssql/server:2017-latestsudo docker run -e "ACCEPT_EULAY" -e "MSSQL_SA_PASSWORD<YourStrongPassw0rd>" -p 1433:1433 --name sqlserver --hostname sqlserver -d mcr.microsoft.…...

The 2019 China Collegiate Programming Contest Harbin Site F. Fixing Banners

Problem - F - Codeforces 翻译&#xff1a; 哈尔滨&#xff0c;这个名字最初是一个满语单词&#xff0c;意思是“晒渔网的地方”&#xff0c;从松花江边的一个小农村居民点发展成为中国东北最大的城市之一。1898年&#xff0c;随着中国东部铁路的到来&#xff0c;这座城市首先…...

Maven的下载和配置

一、前言 一般按要求下载jar ,但是jar 包版本不好控制。有时候就会jar版本不同导致项目运行的结果也有差异&#xff0c;这样在团队开发中&#xff0c;在多个项目开发的是&#xff0c;jar包还要进行拷贝&#xff0c;可能也会出现版本还jar损坏的情况&#xff0c;所以一个能统一…...

服务高并发、高性能、高可用实现方案

服务高并发、高性能、高可用实现方案 软件开发的三高指标&#xff1a;高并发、高性能、高可用。 高并发方面要求QPS 大于 10万&#xff1b;高性能方面要求请求延迟小于 100 ms&#xff1b;高可用方面要高于 99.99%(4个9) 一、高并发&#xff1a; 高并发是现在互联网分布式框架设…...

uniCloud在线升级APP配置教程

app在线升级背景实现思路流程流程背景 因用户需要添加手机h5页面来进数据操作实现思路流程 实现流程图流程 相关文档&#xff1a;帮助文档 https://uniapp.dcloud.net.cn/uniCloud/cf-functions.html 注册服务空间 https://unicloud.dcloud.net.cn/pages/login/login uni升级…...

idea常用的快捷键

idea常用的快捷键Alt回车 导入包,自动修正CtrlN 查找类CtrlShiftN 查找文件CtrlAltL 格式化代码CtrlAltO 优化导入的类和包AltInsert 生成代码(如get,set方法,构造函数等)CtrlE或者AltShiftC 最近更改的代码CtrlR 替换文本CtrlF 查找文本CtrlShiftSpace 自动补全代码Ctrl空格 代…...

全志V85x硬件设计大赛作品精选第一期,快来Pick你心目中的最佳方案

1、V853-智能交互摄像头开发板 该参赛作品基于全志V853开发板制作的一款类似眼镜外挂的小产品&#xff0c;可以对场景进行辅助识别&#xff0c;并通过云端交互实现物联网控制&#xff0c;进一步实现物联网与人机交互的融合。 开发板配置了摄像头和小屏幕接口&#xff0c;并外…...

博客系统(界面设计)

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录实现博客列表页预期效果导航栏页面主体左右布局左侧区域右侧区域完整代码实现博客详情页预期效果导航栏 左侧右侧完整代码实现…...

素材要VIP咋整?看python大展神通

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 再我们缺少素材的时候&#xff0c;我们第一反应 我们肯定会去网上寻找&#xff0c;但是&#xff01;&#xff01; 有的素材需要VIP&#xff01;这可咋整呢&#xff1f; 看我利用python大展神通&#xff0c;采集某图网图片…...

[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-1 通关详解 (附靶机搭建教程)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

软件测试文档编写步骤

编写软件测试文档是软件测试中非常重要的一部分。以下是编写软件测试文档的一些常见步骤&#xff1a; 1.明确软件测试的目标和目的&#xff1a;在开始编写软件测试文档之前&#xff0c;需要明确测试的目标和目的。这包括定义测试的范围&#xff0c;测试的目标和测试的优先级。 …...

重新认识下网页水印

使用背景图图片 单独使用 css 实现&#xff0c;使用 backgroundImage&#xff0c;backgroundRepeat 将背景图片平铺到需要加水印的容器中即可。 如果希望实现旋转效果&#xff0c;可以借助伪元素&#xff0c;将背景样式放到伪元素中&#xff0c;旋转伪元素实现&#xff1a; &l…...

Unity脚本练习

在C# 中 class 是创建类的标志&#xff0c;要创建类的话得现有class上面这个的逻辑是 类的访问权限&#xff0c; 关键字&#xff0c;类名以及类继承的父类在Unity中创建一个脚本或者添加一个组件&#xff0c;就相当于在Unity命名空间中创建了一个可以访问的类。这些类能够直接在…...

二十分钟带你了解JVM性能调优与实战进阶

ZGC 诞生原因 Java生态非常强大&#xff0c;但还不够&#xff0c;有些场景仍处于劣势&#xff0c;而ZGC的出现可以让Java语言抢占其他语言的某些特定领域市场。比如 谷歌主导的Android手机系统显示卡顿。证券交易市场&#xff0c;实时性要求非常高&#xff0c;目前主要是C主…...

对比应用层和内核层区别

一、所使用的空间不同&#xff1a; 应用层使用的空间是0-3G的用户空间。 内核层使用的是3-4G的内核空间。 二、打印信息所用函数不同&#xff1a; 应用层使用printf打印信息。 printf("打印信息\n"); 内核层使用printk打印信息。 …...

Hadoop服役新服务器

目录 0、准备一台新服务器 1、修改主机名 2、配置静态ip 3、配置xshell登录 4、关闭并禁用防火墙 5、分发hadoop和jdk文件 6、分发环境变量文件 7、source 环境变量 8、配置ssh 9、删除105节点的data、logs文件夹 10、单节点启动并关联到集群 11、验证新节点是否有效 0…...

YOLOv8详解 【网络结构+代码+实操】

文章目录YOLOv8 概述模型结构Loss 计算训练数据增强训练策略模型推理过程网络模型解析卷积神经单元&#xff08;model.py&#xff09;Yolov8实操快速入门环境配置数据集准备模型的训练/验证/预测/导出使用CLI使用python多任务支持检测实例分割分类配置设置操作类型训练预测验证…...

FPGA边缘视觉方案解析:从芯片选型到多传感器融合实战

1. 项目概述&#xff1a;单芯片FPGA嵌入式视觉与融合分析方案 最近在梳理一些老项目的技术文档时&#xff0c;翻到了Altera&#xff08;现在已是Intel PSG的一部分&#xff09;和Eutecus在2015年左右合作推出的一套方案&#xff0c;当时在EE Times上被称作“Single-Chip FPGA-B…...

VINS-Mono在EUROC数据集上的实战评测:从轨迹精度到运行耗时,我的避坑心得

VINS-Mono在EUROC数据集上的实战评测&#xff1a;从轨迹精度到运行耗时&#xff0c;我的避坑心得 当第一次在无人机上部署VINS-Mono时&#xff0c;我盯着实时轨迹和地面真值之间逐渐拉大的偏差&#xff0c;意识到论文里的漂亮曲线背后藏着太多未言明的细节。这次评测源于一个实…...

告别手动下载!3步轻松批量获取网易云音乐FLAC无损音乐

告别手动下载&#xff01;3步轻松批量获取网易云音乐FLAC无损音乐 【免费下载链接】NeteaseCloudMusicFlac 根据网易云音乐的歌单, 下载flac无损音乐到本地.。 项目地址: https://gitcode.com/gh_mirrors/nete/NeteaseCloudMusicFlac 你是不是也遇到过这样的烦恼&#x…...

2026发文避坑指南:告别大众型AI,用对垂直编辑器让过审更轻松

在2026年的学术大环境下&#xff0c;核心期刊的收录门槛持续走高&#xff0c;许多科研工作者正面临着一种隐性焦虑&#xff1a;明明实验数据扎实、研究背景深厚&#xff0c;投递出去的稿件却屡屡被退。其实&#xff0c;很多时候被拒的根本原因并非学术价值不足&#xff0c;而是…...

医疗软件开发框架Framewright:HIPAA合规与FHIR集成实践

1. 项目概述&#xff1a;一个为医疗软件量身定制的开发框架 如果你在医疗软件行业摸爬滚打过几年&#xff0c;一定会对开发过程中的那些“特殊要求”深有体会。这不仅仅是写个增删改查的CRUD应用那么简单&#xff0c;你得时刻绷紧神经&#xff0c;处理HIPAA合规、处理复杂的医学…...

大模型应用开发,常用框架汇总

大模型应用开发所涉及的工具和框架&#xff0c;非常的多&#xff0c;且技术更新非常之快。很难全面梳理技术栈全景图。 上一期文章&#xff0c;按照六层框架梳理了全景图&#xff0c;本期文章又收集了一些零散的信息&#xff0c;可以对上一期的架构图各个层级&#xff0c;做个补…...

别再为Matlab地图发愁了!手把手教你用m_map搞定世界地图与中国省界图(附最新shp文件下载)

用m_map工具箱高效绘制专业地图&#xff1a;从安装到论文级可视化实战 第一次接触Matlab绘制地图时&#xff0c;我盯着报错信息发呆了半小时——明明按照教程操作&#xff0c;为什么地图显示一片空白&#xff1f;后来才发现是shp文件路径中多了一个空格。这种看似简单的细节&am…...

国产AI模型平台突围战:模力方舟如何用开源生态打破大厂垄断?

当全球AI竞赛进入深水区&#xff0c;中国开发者正面临关键抉择&#xff1a;是继续依赖封闭的大厂生态&#xff0c;还是拥抱更开放的本土化解决方案&#xff1f;2023年中国AI模型平台市场数据显示&#xff0c;百度千帆、阿里ModelScope、华为ModelArts三大平台占据72%市场份额&a…...

避开BUUCTF《Life on Mars》的思维陷阱:当information_schema查询结果‘不对劲’时,你的排查清单应该有哪些?

破解BUUCTF《Life on Mars》的数据库迷局&#xff1a;当information_schema说谎时的七种侦查策略 在CTF赛场上&#xff0c;SQL注入类题目往往不会按教科书上的剧本发展。当你在BUUCTF《Life on Mars》这道题中执行group_concat(database()) from information_schema.schemata却…...

(5月最新版)OpenClaw 小龙虾 Windows 一键安装与问题排查

OpenClaw&#xff08;小龙虾&#xff09;Windows 11 一键部署教程&#xff5c;2026 新版&#xff5c;零代码・免配置・解压即用 适用系统&#xff1a;Windows 11 专业版 / 家庭版 / 正式版&#xff08;全版本兼容&#xff09;当前版本&#xff1a;v2.7.1 下载地址&#xff1a;…...