通讯协议学习之路:USART协议理论

通讯协议之路主要分为两部分,第一部分从理论上面讲解各类协议的通讯原理以及通讯格式,第二部分从具体运用上讲解各类通讯协议的具体应用方法。

后续文章会同时发表在个人博客(jason1016.club)、CSDN;视频会发布在bilibili(UID:399951374)

一、uart和usart的区别

UART与USART都是单片机上的串口通信,他们之间的区别如下:

首先从名字上看:

UART:universal asynchronous receiver and transmitter通用异步收/发器

USART:universal synchronous asynchronous receiver and transmitter通用同步/异步收/发器

从名字上可以看出,USART在UART基础上增加了同步功能,即USART是UART的增强型,事实也确实是这样。但是具体增强到了什么地方呢?

其实当我们使用USART在异步通信的时候,它与UART没有什么区别,但是用在同步通信的时候,区别就很明显了:大家都知道同步通信需要时钟来触发数据传输,也就是说USART相对UART的区别之一就是能提供主动时钟。如STM32的USART可以提供时钟支持ISO7816的智能卡接口。

  1. 同步与异步:USART支持同步和异步传输,而UART只支持异步传输。同步传输使用外部时钟信号来同步数据传输,而异步传输使用起始位、数据位、停止位等来标识数据的开始和结束。
  2. 时钟信号:USART可以使用外部时钟信号来同步数据传输,这使得它可以在高速传输中实现更高的可靠性和精确性。UART没有内置的时钟信号,只能使用异步传输。
  3. 传输速率:由于USART支持同步传输,因此它可以在更高的传输速率下工作。UART通常用于较低的传输速率,如串口通信。
  4. 数据格式:USART支持多种数据格式,包括数据位数、校验位和停止位的配置。UART通常只支持固定的数据格式,如8个数据位,无校验位和1个停止位。
  5. 错误检测:由于USART支持同步传输和校验位,因此它可以提供更可靠的错误检测和纠正。UART通常没有内置的错误检测机制。

总的来说,USART相对于UART具有更高的灵活性和可靠性,适用于更高速的数据传输和更复杂的通信需求。UART则更简单、更常见,适用于低速的串口通信。选择使用USART还是UART取决于具体的应用需求和硬件支持。

二、USART协议

USART(Universal Synchronous/Asynchronous Receiver/Transmitter)是一种通用的串行通信协议,支持同步和异步传输。它可以用于在计算机和外部设备之间进行数据传输。

USART协议定义了数据的传输格式和通信参数,包括数据位数、校验位、停止位、波特率等。下面是USART协议的一些关键特点:

1. 数据格式:USART可以配置不同的数据位数,通常支持5、6、7或8个数据位。可以选择是否使用校验位来检测数据的完整性。可以选择使用1或2个停止位来标识数据的结束。

2. 传输模式:USART支持同步和异步传输。同步传输使用外部时钟信号来同步数据传输,可以实现更高的可靠性和精确性。异步传输使用起始位、数据位、停止位等来标识数据的开始和结束。

3. 波特率:USART的波特率定义了数据传输的速率,表示每秒传输的位数。常见的波特率包括9600、115200等。波特率的选择需要考虑通信双方的硬件支持和传输距离等因素。

4. 通信模式:USART可以配置为全双工或半双工模式。全双工模式允许同时进行发送和接收操作,而半双工模式只允许发送或接收操作。

5. 错误检测:USART可以提供一些错误检测机制,如奇偶校验、帧错误检测等。这些机制可以帮助检测和纠正数据传输中的错误。

USART通常用于串口通信,可以连接各种外部设备,如传感器、显示器、无线模块等。它在嵌入式系统、通信设备、工业控制等领域得到广泛应用。使用USART进行通信需要双方设备的串口配置相匹配,以确保正确的数据传输。

三、USART怎么实现同步通信

要实现USART的同步通信,需要使用外部时钟信号来同步数据传输。下面是一种常见的同步通信方式:

1. 配置USART为同步模式:首先,需要将USART配置为同步模式。这通常涉及设置USART的控制寄存器,以选择同步模式和设置其他通信参数,如数据位数、校验位和停止位等。

2. 连接外部时钟信号:在同步模式下,需要连接外部时钟信号到USART的时钟引脚。这个时钟信号将用于同步数据传输。

3. 数据传输:在同步模式下,数据的传输是通过时钟信号来同步的。发送方在每个时钟周期中将数据位发送到USART的数据引脚,接收方在相同的时钟周期中读取数据位。发送方和接收方必须使用相同的时钟信号来保持同步。

4. 时钟信号的配置:时钟信号的频率和相位需要在发送方和接收方之间进行协商和配置。发送方和接收方必须使用相同的时钟频率和相位来保持同步。这通常需要在通信双方之间进行协商和配置。

需要注意的是,同步通信需要外部时钟信号的支持,并且在配置时需要确保发送方和接收方使用相同的时钟频率和相位。同步通信可以提供更高的可靠性和精确性,适用于一些对数据传输要求较高的应用场景。但是,同步通信也需要更复杂的硬件支持和配置,相对于异步通信来说更为复杂。

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

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

相关文章

手机抬手亮屏解锁,用到了哪些硬件?

随着时代发展,智能手机以丰富的功能及便利性,成为了人们必不可少的物品,其中人脸解锁功能是非常有用的功能,广受年轻人的喜爱,那么你知道她是如何实现吗?今天凡小亿带你们探索! 手机抬手亮屏解锁…

mysql—表单二

一、查询环境 1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) ); 创建score表。SQL代码如下: CR…

4-k8s-部署springboot项目简单实践

文章目录 一、部署原理图二、部署实践 一、部署原理图 部门一般都有一个属于自己的私服gitlab服务器,由开发者开发代码,然后上传到私服gitlab然后使用调度工具,如jenkins,去gitlab拉去代码,编译打包,最后得…

【ELK 使用指南 1】ELK + Filebeat 分布式日志管理平台部署

ELK和EFLK 一、前言1.1 日志分析的作用1.2 需要收集的日志1.3 完整日志系统的基本特征 二、ELK概述2.1 ELK简介2.2 为什么要用ELK?2.3 ELK的组件 三、ELK组件详解3.1 Logstash3.1.1 简介3.1.2 Logstash命令常用选项3.1.3 Logstash 的输入和输出流3.1.4 Logstash配置文件 3.2 E…

STM32 BootLoader设置

编写bootloader程序: 直接复制下面代码到自己程序中。 typedef void (*iapfun)(void); //定义一个函数类型的参数. iapfun jump2app; //设置栈顶地址 //addr:栈顶地址 __asm void MSR_MSP(u32 addr) {MSR MSP, r0 //set Main Stack valueBX r14 }//跳转到…

解决容器内deepspeed微调大模型报错

解决容器内deepspeed微调大模型报错:[launch.py:315:sigkill_handler] Killing subprocess 问题描述:解决办法 问题描述: 在容器中用deepspeed微调百川大模型2时,出现上述错误,错误是由于生成容器时,共享内…

七个开发者不可不知的VS Code小技巧

本文就来分享 7 个极大提高开发效率的 VS Code 技巧! 目录 1.固定滚动(Sticky Scroll) 2.命令面板(Command Palette) 3.自定义代码片段(Custom Snippets) 4.文件查找(File Finde…

SpringBoot实现SSMP整合

一、整合JUnit 1、Spring 整合 JUnit 核心注解有两个: RunWith(SpringJUnit4ClassRunner.class) 是设置Spring专用于测试的类运行器(Spring程序执行程序有自己的一套独立的运行程序的方式,不能使用JUnit提供的类运行方式)Conte…

十个面试排序算法

一、 前言 最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种排序的代码一定要信手拈来才行。还有插入排序、冒泡排序、堆排序、基数排序、桶排序等。面试官对于这些排序可能会要求比较各自的优劣、各种算法的思想及其使用场景…

Kotlin中的比较运算符

在Kotlin中,我们可以使用比较运算符进行值的比较和判断。下面对Kotlin中的等于、不等于、小于、大于、小于等于和大于等于进行详细介绍,并提供示例代码。 等于运算符(): 等于运算符用于判断两个值是否相等。如果两个值…

[Python中常用的回归模型算法大全:从线性回归到XGBoost]

文章目录 概要保序回归:理论与实践多项式回归:探索数据曲线关系多输出回归的示例 概要 在数据科学和机器学习领域,回归分析是一项关键任务,用于预测连续型变量的数值。除了传统的线性回归模型外,Python提供了丰富多样…

一文带你GO语言入门

什么是go语言? Go语言(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go语言的主要特点包括:- 简洁和简单 - 语法简单明快,易于学习和使用 特点 高效 编译速度快,执行效率高 并发支持 原生支持并发,利用goroutine实现高效的并发…

小程序canvas层级过高真机遮挡组件的解决办法

文章目录 问题发现真机调试问题分析问题解决改造代码效果展示 问题发现 在小程序开发中需要上传图片进行裁剪&#xff0c;在实际真机调试中发现canvas层遮挡住了生成图片的按钮。 问题代码 <import src"../we-cropper/we-cropper.wxml"></import> <…

面试总结分享:25道数据库测试题

1&#xff09;什么是数据库测试&#xff1f; 数据库测试也称为后端测试。数据库测试分为四个不同的类别。数据完整性测试 数据有效性测试 数据库相关的性能 测试功能&#xff0c;程序和触发器 2&#xff09;在数据库测试中&#xff0c;我们需要正常检查什么&#xff1f; 通常&a…

VBA技术资料MF71:查找所有空格并替换为固定字符

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。我的教程一共九套&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到…

Typora +Picgo 搭建个人笔记

文章目录 Typora Picgo 搭建个人笔记一、Picgo Github 搭建图床1.基础设置2. 将配置导出&#xff0c;方便下次使用 二、Typora&#xff1a;设置 &#xff1a;1. 基本设置2. 导出自动提交3. 备份图片 Typora Picgo 搭建个人笔记 typora 下载地址&#xff1a; https://zahui.fan…

论文浅尝 | 深度神经网络的模型压缩

笔记整理&#xff1a;闵德海&#xff0c;东南大学硕士&#xff0c;研究方向为知识图谱 链接&#xff1a;https://arxiv.org/abs/1412.6550 动机 提高神经网络的深度通常可以提高网络性能&#xff0c;但它也使基于梯度的训练更加困难&#xff0c;因为更深的网络往往更加强的非线…

新业务场景如何个性化配置验证码?

验证码作为人机交互界面经常出现的关键要素&#xff0c;是身份核验、防范风险、数据反爬的重要组成部分&#xff0c;广泛应用网站、App上&#xff0c;在注册、登录、交易、交互等各类场景中发挥着巨大作用&#xff0c;具有真人识别、身份核验的功能&#xff0c;在保障账户安全方…

DH48WK 温控器参数设置

北京东昊力伟科技有限责任公司 温控仪、温度控制器 产品特点&#xff1a; 可外接温度传感器Pt100、Cu50、K、E、J、N、T、R、S、B兼容输入&#xff1b;PID控制输出、位式控制输出、继电器报警输出&#xff1b;控温能满足设定温度值的0.2℃&#xff1b;既可用于加热控制、也可…

Sectigo OV通配符1590元

通配符SSL证书是一种特殊的SSL证书&#xff0c;它能够为多个域名提供加密保护&#xff0c;这种证书可以用于保护一个主域名及其所有子域名&#xff0c;适合子域名比较多的个人或者企事业单位使用。通配符SSL证书既节省了管理证书的时间&#xff0c;又减少了购买SSL证书的成本&a…