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

news2025/1/18 4:30:38

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

后续文章会同时发表在个人博客(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.coloradmin.cn/o/1107581.html

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

相关文章

把微信好友不小心删了,有什么办法找回?

常见的重新加回微信好友有以下几种: ①通过微信群找回,看有无共同的群,重新将对方加回来 ②通过朋友圈的动态找回 ③如果是加不久的好友,可以在微信新的朋友功能里重新添加 ④通过共同好友,让朋友圈推荐好友名片找…

一键式AI智能剪辑,轻松处理视频,释放无限创意!“

想象一下,您可以在几秒钟内完成一个复杂的视频剪辑,而无需投入大量的时间和精力。现在,这个梦想已经成为现实!我们的新一代AI智能剪辑技术,将使视频处理变得轻松无压力。 第一步:首先进入好简单批量智剪主…

C#上位机序列9: 批量读写+事件广播

1. 读取配置文件及创建变量信息(点位名称,地址,数据类型(bool/short/int/float/long/double)) 2. 读任务&写任务,数据有变化时事件广播通知 using HslCommunication; using HslCommunication.Core; usi…

基于YOLOv8模型的水下目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOv8模型的水下目标检测系统可用于日常生活中检测与定位鱼、水母、企鹅、海鹦、鲨鱼、海星、黄貂鱼,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统…

34 机器学习(二):数据准备|knn

文章目录 数据准备数据下载数据切割转换器估计器 kNN正常的流程网格多折交叉训练原理讲解距离度量欧式距离(Euclidean Distance)曼哈顿距离(Manhattan Distance)切比雪夫距离 (Chebyshev Distance)还有一些自定义的距离 就请读者自行研究 再识K-近邻算法API选择n邻居的思辨总结…

MySQL分组查询每组最新的一条数据(提供三种实现方法,附带三种方法查询性能比较和分析查询原理)

目录 一、前言二、注意事项三、准备SQL四、错误查询分析4.1、错误原因 五、实现方法5.1、实现方法一(使用 LIMIT 查询)5.2、实现方法二(使用 DISTINCT 查询)5.3、实现方法三(使用 MAX(id) 查询,只适用于自增…

一篇文章讲明白double、float丢失精度的问题

1.背景 1.10.1 1.2000000000000002 发现上面计算的值竟然和数学计算不一致 2. 问题 计算机是通过二进制计算的,如果我们在二进制的视角来看待上面问题,就很容易发现问题了。 例如:把「0.1」转成二进制的表示,然后还原成十进制&…

846. 树的重心

输入样例 9 1 2 1 7 1 4 2 8 2 5 4 3 3 9 4 6输出样例: 4 分析:因为有n-1条边,所以每个点必然会连接到其他点,不存在孤立点,因此,我们从1-n任意点开始dfs都是可以的,因为无论怎么样&#xff0…

mrRobot

一、信息收集 1.访问地址 没啥信息,尝试扫下目录 2.目录扫描 key1 发现有wp-admin/和robots.txt robots.txt里面还拿到了一个密码字典,猜测是爆破wp的网站账号密码的 3.访问wp-admin/ ┌──(root💀kali)-[~/桌面] └─# sort -u fsoci…

Java并发面试题:(六)悲观锁和乐观锁和Java内存模型和CAS原理

悲观锁和乐观锁的区别 什么是悲观锁? 基本上我们理解的操作前对资源加锁,操作完后释放锁。说的都是悲观锁。悲观锁认为所有的资源都是不安全的,随时会被其他线程操作、更改。所以操作资源前一定要加一把锁、防止其他线程访问。 什么是乐观锁&…

基于geojson-vt和canvas的高性能出图

概述 本文介绍基于geojson-vt和canvas,实现node端高性能出图。 效果 实现 1. canvas绘图 import { createCanvas } from canvasconst tileSize 256; const canvas createCanvas(tileSize, tileSize) const ctx canvas.getContext(2d)2. 处理geojson const g…

python二次开发Solidworks:圆形弹簧

目录 1、手动建模 2、python自动建模 1、手动建模 第一步​:草图1,在上视基准面画一个圆心在原点,直径50mm的圆​; 第二步​:草图2,在上视基准面画两条构造线,一条经过原点方向竖直&#xff0…

【jvm】虚拟机栈之局部变量表

目录 一、说明二、代码分析2.1 代码示例2.2 执行javap2.3 jclasslib插件查看 三、对slot的理解3.1 说明3.2 slot索引图3.3 实例方法的局部变量表3.4 long和double类型变量占2个slot 四、slot的重复利用4.1 说明4.2 变量c复用变量b的槽位 五、静态变量与局部变量对比 一、说明 1…

NEFU计算机网络实验一常见网络命令的使用

一、实验目的 1、理解、验证常用网络命令的原理和功能。 2、掌握常用的网络命令使用方法,合理使用相关命令对网络进行管理与维护。 二、实验内容 网络参数查询命令:IPCONFIG 网络测试命令:ping 路由表命令ROUTE 网络端口查询命令&…

chatglm配置

推荐看这个链接,有些问题解决出处https://zhuanlan.zhihu.com/p/643824521 以及这个https://blog.csdn.net/weixin_40547993/article/details/131775275 1.需要pytorch2.0,所以CUDA推荐11.8 ChatGLM2-6B版本要装PYTORCH2.0,而且要2.0.1 &a…

resultMap 和 resultType的用法和区别详解

resultMap 和 resultType的用法和区别详解 《resultMap 和 resultType的用法和区别详解》摘要引言resultType - 用法和映射示例了解resultType示例演示 resultMap - 区别、高级用法和自定义映射规则详解resultType vs. resultMap高级用法示例演示 Mybatis的CRUD操作总结参考资料…

信息保卫战:揭秘迅软DSE护航企业免受泄密之害

随着网络技术的发展,通过网络应用如网盘、网页、邮件、即时通讯工具传输分享文件变得越来越多,这些工具传输速度快,能够将大容量的文档快速传送给他人,在工作中受到许多人的青睐。 然而由这些传输工具引发的泄密事件也不断增多&am…

进程概念[下]

一、 进程优先级 0x01 什么叫进程优先级 CPU资源分配的先后顺序 0x02 为什么要有进程优先级 因为资源不足,是分配资源的一种方式,优先权高的进程有优先执行权利 0x03 查看更加详细的进程信息 ①运行代码 #include<iostream> #include<unistd.h> using na…

Cesium 空间量算——方位角量测

文章目录 需求分析需求 实现对方位角的量测功能 分析 可以通过Cesium API提供的方法手动实现方位角测量。下面是一个可以帮助你开始实现方位角测量的代码示例: // 初始化Cesium Viewer var viewer = new Cesium.Viewer(cesiumContainer);// 创建材质

第六章redux的使用(餐饮版)

文章目录 一、redux的使用1、redux原理图解析 二、同步计算器案例2、创建src/redux/constant.js&#xff08;食材库&#xff09;3、创建src/redux/store.js&#xff08;厨房&#xff09;3-1、安装redux3-2、store.js 4、count_reducer.js&#xff08;厨师&#xff09;5、count_…