一、深入简出串口(USRT)通信——基本概念。

一、前言

串口到底是什么?简单来说一句话就可以解释,串口就是一种通信协议
看到这里可能大家会觉得你这不是放屁么,说了跟没说一样。所以这里做前言来描述,大家要先对通信协议有一个下意识地认识才能在学习串口的时候不至于迷茫。

通信协议

所谓通信协议,说白了就是传输数据的双方规定好的一些规则。
就像你朋友问你这周末去干嘛?你回复个233。如果不事先规定好,你朋友肯定觉得一头雾水。
另一种情况同样是你朋友问你这周末去干嘛?但是你俩事先规定了,2就是钓鱼,3就是追剧。那么他就知道你周末要做的事就是钓鱼、追剧、追剧。

二、串口通信协议(USRT)

前面我们知道串口是一种通信协议。详细点来说:

串口协议是一种全双工串行异步的通信协议。

对于纯小白来说乍一看挺唬人的。其实就是加上三个修饰语。
全双工:接收信息,和发送信息可以同时进行。
在这里插入图片描述

串行:传输数据的时候数据走同一根数据线。
在这里插入图片描述

异步:各自使用自己的时钟。
异步就像是你给一个远在大洋彼岸的朋友发送信息,可能你这里是早上8:00,他那里是下午3:00。那么你这里显示的发送时间就是早上8:00,他那里显示接收到的时间就是下午3:00。

串口传输数据格式

数据格式,是作为一个通信协议很重要的一部分。这就像你和中国人聊天用中文,和英国人聊天用英格力士。
串口的数据格式如下:
在这里插入图片描述
上图中绿色的数据部分自然不必多说,本来就是为了传输数据才有的串口协议,所以必须携带数据。但是另外三个为什么在传输数据的时候还有这三个东西呢?
起始位: 标志数据传输的开始。
这个有必要解释一下,为什么需要起始位,串口这个东西可以将它想象成对讲机一样,你将对讲机调到指定频道,他就会一直传来各种声音,那么什么时候这些信息是对你说的呢?那就是你听到对讲机里有人喊你的时候,你才应该认真听接下来的信息。这个就是起始位的作用。
如果不要这个起始位,你就无法分析对讲机传来的声音到底什么时候是对你说的,想象一下你手握的对讲机一直在传递命令但是并没有指定是对谁说的,也是很诡异的。
校验位: 校验数据是否正确。
校验位就是一种防止信息出错的一种保障,就像你给你的好兄弟或者好闺蜜寄一个很贵重的东西,你在包装她的时候贴了一个封条,你俩约定好对方收到后先检查封条,如果封条没问题就证明你发出去的东西没有被动过。体现在数据传输就是校验位
停止位: 表明数据传输完成。
这个没啥可解释的,就是表明这个数据发完了。

串口传输数据原理

串口通信是利用高低电平来完成的。数据以0,1的形式传递。

0: 0V电压。
1: 3.3~5V电压。
这么解释会使我们感到它的原理云遮雾罩,类比一下就可以很好理解。
想象一下,梦回古代现在两军交战,你负责统帅三军,那么该如何指挥?
古人很聪明啊,他们想到用旗帜的是否举起来传递信息,举旗进攻,落旗后撤。这其实就可以当作串口中的高低电平。

串口通信空闲的时候是高电平

上述例子有个问题,就是不传递信息的时候,我的🚩到底是举着还是落了?这时候我们规定不用的时候举起来。体现在串口通信就是空闲态为高电平

串口通信起始位是高电平到低电平的变换

回到上面的假设,不传递信息的时候,我的🚩一直举着,传递信息时举旗代表进攻。观察员该怎么分辨到底是进攻还是空闲?这里我们规定当旗帜从举着到挥下,这个代表开始传递信息(起始位),观察员看到这个就知道,好了下面该传递信息了。

串口通信终止位是高电平

上面我们已经知道,高电平代表空闲态,不传输数据了。所以停止位就是要把电平恢复到高电平。
这里为什么不说 串口通信终止位是低电平到高电平的变换 呢?
因为传输数据完就是停止位,所以谁知道最后一位数据是高电平还是低电平。
就像上面用旗子传递,谁知道你最后一个指令是举着旗子还是落下旗子。

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

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

相关文章

【Flutter 常见问题系列 第 1 篇】Text组件 文字的对齐、数字和字母对齐中文

TextStyle中设置height参数即可 对齐的效果 Text的高度 是根据 height 乘于 fontSize 进行计算的、这里指定heiht即可、不指定的会出现 无法对齐的情况,如下: 这种就是无法对齐的情况

Qt4用子类化ProxyModel和子类化MainWindow实现全表筛选,中文排序和复制粘贴

目录 1 需求 2 子类化ProxyModel实现全表筛选 3 字符串列表实现中文排序 3.1 Qt5中文排序 3.2 Qt4排序 4 表格的复制粘贴 5 应用 1 需求 模型视图编程是Qt开发的基本功,其中有几个关键问题需要解决: 全表筛选,或者说多列搜索中文排序…

Linux服务器SSH客户端断开后保持程序继续运行的方法

目录 1. nohup 命令: 2. tmux 或 screen: 3 final shell 断开后服务器如何继续执行令? 方法一:使用 nohup 命令 方法二:将命令放在后台执行 4 你可以使用 jobs 命令查看当前终端中正在后台运行的任务 &#xff…

决策树(第四周)

一、决策树基本原理 如下图所示,是一个用来辨别是否是猫的二分类器。输入值有三个(x1,x2,x3)(耳朵形状,脸形状,胡须),其中x1{尖的,圆的}&#xf…

叠加原理(superposition principle)、线性系统

叠加原理(superposition principle):指对一个系统而言,两个或多个输入产生的输出,等于这几个输入单独引起的输出的和,即输入的叠加等于各输入单独引起的输出的叠加。 线性系统:一个系统&#x…

常用的Linux的指令

目录 常用指令 1、文件和目录操作: 2、文件查看和编辑 3、系统信息 4、进程管理 5、用户和权限 6、网络操作 7、压缩和解压 8、软件包管理 常用指令 1、文件和目录操作: ls:列出目录内容 cd: 切换目录 pwd:显…

十分钟让你搞懂JVM中的GC垃圾回收机制(分代回收)

文章目录 0. 为什么要有垃圾回收?1. 垃圾回收哪个内存区域?2. 如何找到垃圾(死亡对象的判断)2.1 引用计数法2.2 可达性分析法2.3 两种算法的差别 3. 如何清理垃圾(死亡对象的回收)3.1 标记-清楚法3.2 复制法3.3 标记-整理法 4. JVM使用的回收方法4.1 什么是分代回收4.2 哪些对…

JVM——几种常见的对象引用

目录 1. 软引用软引用的使用场景-缓存 2.弱引用3.虚引用和终结器引用 可达性算法中描述的对象引用,一般指的是强引用,即是GCRoot对象对普通对象有引用关系,只要这层关系存在, 普通对象就不会被回收。除了强引用之外,Ja…

C++局域网从服务器获取已连接用户的列表(linux to linux)

目录 服务器端 代码 客户端 代码解析 服务器端 原理 遇到的阻碍以及解决办法 客户端 原理 遇到的阻碍以及解决办法 运行结果截图 总结 服务器端 代码 #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <netinet…

深入了解 Pinia:现代 Vue 应用的状态管理利器

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【Python】用三种方法创建tkinter桌面窗口

Python的tkinter是Python的标准GUI库之一&#xff0c;它是一个开源的、跨平台的GUI工具包&#xff0c;可以用于创建桌面应用程序。 tkinter提供了许多常见的GUI组件&#xff0c;例如按钮、文本框、标签、列表框等等&#xff0c;可以轻松地创建各种类型的桌面应用程序。它还支持…

云服务器上部署 Web 项目及端口异常处理

文章目录 1. 在云服务器的 MySQL(MariaDB) 中, 建库建表2. 微调代码3. 打包4. 把 war 包 拷贝到云服务器上端口被占用处理 1. 在云服务器的 MySQL(MariaDB) 中, 建库建表 在云服务器中进入 MySQL mysql -u root -p把之前本地写好的 SQL 代码一粘贴即可 例如: -- 这个文件主要…

线性表,也是Java中数组的知识点!

线性表定义&#xff1a; 由n (n≥0)个数据特性相同的元素构成的有限序列称为线性表&#xff0c;(n0)的时候被称为空表。 线性表的顺序表示 线性表的顺序存储又被称为顺序表 优点 无需为表示表中元素之间的逻辑关系而增加额外的存储空间可以随意读取任意位置的元素 缺点 插入…

人力资源管理后台 === 登陆+主页灵鉴权

目录 1. 分析登录流程 2. Vuex中用户模块的实现 3.Vue-cli代理解决跨域 4.axios封装 5.环境区分 6. 登录联调 7.主页权限验证-鉴权 1. 分析登录流程 传统思路都是登录校验通过之后&#xff0c;直接调用接口&#xff0c;获取token之后&#xff0c;跳转到主页。 vue-elemen…

html实现360度产品预览(附源码)

文章目录 1.设计来源1.1 拖动汽车产品旋转1.2 汽车产品自动控制 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134613931 html实现360度产品预览&#xff08;附源码&…

VUE留言板

效果预览图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>作业</title><styl…

Flutter | TextField长按时选项菜单复制、粘贴显示为英文问题解决

Flutter | TextField长按时选项菜单复制、粘贴显示为英文问题解决 问题描述&#xff1a; 长按TextField后&#xff0c;显示剪切、复制等选项为英文&#xff0c;如下图所示&#xff0c;这是因为问未设置语言本地化&#xff0c;我们需要进行设置。 首先在pubspec.yaml加入以下依赖…

rsyslog出现Unit rsyslog.service is masked不可用问题解决

博主在测试将日志发送到日志服务器的功能时遇到了rsyslog服务不可用的问题&#xff0c;具体来说&#xff0c;就是执行systemctl restart rsyslog或者 service rsyslog restart命令时&#xff0c;出现了标题中所述的Unit rsyslog.service is masked问题。网上查找了很多资料&…

【代码】平抑风电波动的电-氢混合储能容量优化配置(完美复现)matlab-yalmip-cplex/gurobi

程序名称&#xff1a;平抑风电波动的电-氢混合储能容量优化配置 实现平台&#xff1a;matlab-yalmip-cplex/gurobi 代码简介&#xff1a;针对电-氢混合系统协同平抑接入新型电力系统的 新能源波动问题&#xff0c;提出考虑碱性电解槽运行特性的电-氢 混合储能容量优化配置方案…

这一款 Mac 系统终端工具,已经用的爱不释手了!

&#x1f525;&#x1f525;&#x1f525;作为程序员或者运维管理人员&#xff0c;我们经常需要使用终端工具来进行服务器管理及各种操作&#xff0c;比如部署项目、调试代码、查看/优化服务、管理服务器等。 相信大家用的最多的终端工具就是 Xshell、iTerm2和Mobaxterm&#…