stm32-USART通信

什么是usart?和其他通信又有什么区别?

如下图:

        USART是一种用于串行通信的设备,可以在同步和异步模式下工作。

        usart有两根数据线,一根发送线(tx)一根接收线(rx),它可以实现同时的双向通信,因此是一种全双工串行通信,但是其缺陷是支持点对点,不支持多设备

常用设备:比如usb转ttl,蓝牙模块等

异步模式

在异步模式下,USART不使用时钟信号来同步发送和接收的数据,而是依赖于双方设置的相同波特率。数据传输通过起始位、数据位、奇偶校验位(可选)和停止位来实现同步。

  • 起始位:表示数据传输的开始,通常为低电平。
  • 数据位:实际传输的数据位,可以是5到9位。
  • 奇偶校验位:用于检测传输错误(可选)。
  • 停止位:表示数据传输的结束,通常为高电平。
同步模式

在同步模式下,USART使用一个额外的时钟信号(SCLK)来同步发送和接收的数据。发送方和接收方共享这个时钟信号,确保数据传输的同步和准确性。

  • 数据位:与异步模式相同,可以是5到9位。
  • 时钟信号(SCLK):用于同步发送和接收的数据。
  • 同步数据帧:数据帧的结构与异步模式相似,但在时钟信号的同步下进行传输。

但是在一般不加时钟的多,一般用异步。

数据传输过程
  1. 初始化:在使用USART进行通信前,需要配置USART的波特率、数据位、奇偶校验位、停止位和工作模式(同步或异步)。
  2. 发送数据:将数据写入发送数据寄存器,USART会根据配置的波特率和其他参数自动发送数据。
  3. 接收数据:当USART接收到数据后,会将其存储在接收数据寄存器中,可以通过中断或轮询的方式读取数据。
双工模式介绍:
  1. 全双工(Full Duplex):USART在全双工模式下,可以同时发送和接收数据。它通常使用两个独立的数据线:TX(发送)和RX(接收)。全双工通信提高了数据传输的效率,因为发送和接收操作不会互相阻塞。

  2. 半双工(Half Duplex):虽然USART的硬件设计支持全双工,但它也可以配置为半双工模式。在半双工模式下,同一时间只能发送或接收数据,而不能同时进行。这种模式通常使用一根数据线(通常是TX/RX共用一根线),需要切换方向来发送或接收数据。

  3. 单工(Simplex):单工通信是指数据只能单向传输,即只能发送或只能接收,不能同时进行。虽然USART硬件一般不用于单工通信,但在某些特定应用场景中,可以将其配置为单工模式

接线:

在这我们一般取用异步接线,

TX与RX要交叉连接,因为对于设备2来说,设备1的发送(tx)就是它的接收(rx),对方同理。

电平标准:

        电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:

         TTL电平:+3.3V或+5V表示1,0V表示0

         RS232电平:-3~-15V表示1,+3~+15V表示0

        RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号)

串口参数时序:

波特率:串口通信的速率

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

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

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

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

数据包:

HEX:

       

文本:

疑问解答:

看到这是不是有了一些疑问?

1.既然大部分是利用异步通信,那么他们是如何保证数据发送和接收不会错误?

2.usart和uart是一个吗?有区别吗?

3.usart和iic、rs485、can等又有什么区别?

1.        

        既然双设备利用串行双向发送,那么发送和接收肯定要约定好一个频率,主机按照一定频率发送,从机按照一定频率接收,这样子才不会出现丢包、空包。因此,在这里面,就出现了一种通信参数,叫做波特率。        

        发送端和接收端必须配置相同的波特率,即每秒钟传输的比特数。以此保证串口每发送的一位数据,其都能接收到,常见波特率:9600、115200、19200。

2.

  • USART:支持同步和异步两种模式。在同步模式下,USART使用时钟信号进行数据同步传输,这意味着发送和接收需要共享一个时钟信号。在异步模式下,USART的工作方式与UART相同,不需要共享时钟信号。
  • UART:只支持异步模式,不需要共享时钟信号,发送和接收数据通过串行数据线进行。

        主要的区别在于 USART 具有同步传输的能力,可以通过外部时钟源进行精确的时钟同步,而 UART 只能支持异步传输。USART 在物理层面的连接和电信号处理方面也稍有区别。

        因此,选择使用 UART 还是 USART 取决于具体的应用需求。如果只需要基本的异步传输功能,可以选择 UART。如果需要同步传输或更高级的功能,如多主机通信、同步通信等,可以选择 USART。


3.

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

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

相关文章

React Antd ProTable 如何设置类似于Excel的筛选框

React Antd ProTable 如何设置类似于Excel的筛选框 目标:在web页面的table表格中完成类似于EXCEL的Filter筛选功能。 示例图:点击标题列上方的漏斗状图标,即可对数据进行筛选。 ProTable 前景提要 ProTable API中有说明,是有…

解决所有终端中文输出乱码的问题

一、系统自带的cmd.exe 以及 Git的bash.exe、sh.exe、git-bash.exe和git-cmd.exe,和PowerShell默认使用“当前系统区域设置”设定好的936 (ANSI/OEM - 简体中文 GBK)语言编码。 1、[当前代码页] 的936 (ANSI/OEM - 简体中文 GBK) 是导致中文乱码的原因 在控制面板→…

网络抓包分析工具

摘要 随着网络技术的快速发展,网络数据的传输和处理变得日益复杂。网络抓包分析工具作为网络故障排查、性能优化以及安全审计的重要工具,对于提升网络管理的效率和准确性具有重要意义。本文旨在设计并实现一款高效、易用的网络抓包分析工具,…

期末测试一

字符数组的排序注意的问题 &#xff1a; 1.对于输入字符的时候 如果给出了要输入几个字符 n >>>>> for ( i 0 ; i < n ;i ) { scanf("%c",&ch); } 如果说直到输入到换行符结束 >>>>>>while ( ch! \ n ) 这个需要额…

CSS|04 复合选择器伪类选择器属性选择器美化超链接

基本选择器&#xff1a;见上篇基本选择器 复合选择器选择器1,选择器2{属性:值;} 多元素选择器&#xff0c;同时匹配选择器1和选择器2&#xff0c;多个选择器之间用逗号分隔举例&#xff1a; p,h1,h2{margin:0px;}E F{属性:值;} 后代元素选择器&#xff0c;匹配所有属于E元素后…

基于长短时记忆网络LSTM的TE过程故障诊断(MATLAB R2021B)

实验所用 TE 仿真过程的数据集是网上公开的数据集&#xff0c;该数据集中的训练集和测试集分别包含 20 种故障工况和一种正常工况数据&#xff0c;其中所采集的每个样本信号包含 41 个测量变量和 11 个控制变量&#xff0c;所以每个时刻采集到的样本有 52 个观测变量。 TE 仿真…

NoSQL之Redis配置与管理

目录 一、关系型数据库和非关系型数据库 1.关系型数据库 2.非关系型数据库 3.关系型数据库和非关系型数据库区别 二、Redis 1.Redis简介 2.Redis 的优点 3.Redis 使用场景 4.Redis的数据类型 5.哪些数据适合放入缓存中&#xff1f; 6.Redis为什么这么快&#xff1f;…

ActiveMQ camel

游览器输入地址: http://127.0.0.1:8161/admin/ 访问activemq管理台 账号和密码默认为: admin/admin# yml配置的密码也是如下的密码 activemq:url: failover:(tcp://localhost:61616)username: adminpassword: adminComponent public class ActiveMqReceiveRouter extends Rout…

AudioLM音频生成模型

GPT-4o (OpenAI) AudioLM&#xff08;Audio Language Model&#xff09;是一种生成音频的深度学习模型。它可以通过学习语言模型的结构来生成连贯和高质量的音频信号。这类模型通常应用于语音合成、音乐生成和音频内容生成等领域。以下是一些与AudioLM相关的核心概念和技术细…

【JavaEE进阶】Spring AOP使用篇

目录 1.AOP概述 2.SpringAOP快速入门 2.1 引入AOP依赖 2.2 编写AOP程序 3. Spring AOP详解 3.1 Spring AOP 核心概念 3.1.1切点(Pointcut) 3.1.2 连接点 (Join Point) 3.1.3 通知(Advice) 3.1.4 切面(Aspect) 3.2 通知类型 3.3PointCut 3.4 切面优先级 3.5 切点表…

基于经典滑膜控制的永磁同步电机调速系统MATLAB仿真

滑膜控制器 取PMSM状态变量为&#xff1a; ωref为目标转速&#xff0c;ωm为电机输出转速。将此式求导得&#xff1a; 定义系统滑模面函数为&#xff1a; 对滑模面函数求导 在电机实际控制时&#xff0c;滑模控制方法存在高频抖振问题&#xff0c;则需要选取合适的指数趋近率…

web前端——css(一篇教会网页制作)

目录 一、基本语法 1.行内样式表 2.内嵌样式表 3.外部样式表 二、选择器 1.标签选择器 2.类选择器 3.id 选择器 4.通配选择器 三、常见修饰 1.文本 2.背景 3.列表 4.伪类 5.透明度 6.块级、行级、行级块标签 7.div 和 span 四、盒子模型&#xff08;重点&…

【PostgreSQL】守护数据安全:事务与数据完整性管理

目录 事务管理&#xff1a;确保操作的原子性 事务的概念与重要性 事务的启动与提交 事务的回滚&#xff08;ROLLBACK&#xff09;&#xff08; 数据一致性与隔离级别 隔离级别的解释 设置隔离级别 错误处理与事务的高级策略 异常处理&#xff08;SAVEPOINT & EXCE…

25届最近5年重庆邮电大学自动化考研院校分析

重庆邮电大学 目录 一、学校学院专业简介 二、考试科目指定教材 三、近5年考研分数情况 四、近5年招生录取情况 五、最新一年分数段图表 六、历年真题PDF 七、初试大纲复试大纲 八、学费&奖学金&就业方向 一、学校学院专业简介 二、考试科目指定教材 1、考试…

[数据集][目标检测]电缆钢丝绳线缆缺陷检测数据集VOC+YOLO格式1800张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1800 标注数量(xml文件个数)&#xff1a;1800 标注数量(txt文件个数)&#xff1a;1800 标注…

单例模式(下)

文章目录 文章介绍步骤安排及单例讲解step1&#xff1a;注册单例类型&#xff08;main.cpp&#xff09;step2&#xff1a;定义类和私有构造函数&#xff08;keyboardinputmanager.h&#xff09;step3:&#xff08;keyboardinputmanager.cpp&#xff09;step4&#xff1a;在qml中…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 特殊加密算法(200分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

Rust 跨平台-Android 和鸿蒙 OS

1. 安装 rustup rustup 是 Rust 的安装和版本管理工具 $ curl --proto https --tlsv1.2 https://sh.rustup.rs -sSf | sh 该命令会安装 rusup 和最新的稳定版本的 Rust&#xff1b;包括&#xff1a; rustc Rust 编译器&#xff0c;用于将 Rust 代码编译成可执行文件或库。 ca…

技术速递|Visual Studio Code 的 .NET MAUI 扩展现已正式发布

作者&#xff1a;Maddy Montaquila 排版&#xff1a;Alan Wang 今天&#xff0c;我们非常高兴地宣布 .NET MAUI VS Code 扩展插件结束了预览阶段&#xff0c;并将包含一些期待已久的新功能 - 包括 XAML IntelliSense 和 Hot Reload&#xff01; 什么是 .NET MAUI 扩展插件&…

GuLi商城-商品服务-API-三级分类-删除-页面效果

一步步学习Vue太慢了&#xff0c;准备跳过前端的学习&#xff0c;直接使用前端完整的项目 下载依赖npm install&#xff0c;会报错&#xff0c;排查了好久 我安装的是Node14&#xff0c;所以必须要安装4.14 Vscode终端输入&#xff1a;npm install node-sass4.14 输入&#x…