最后更新:2022-05-20 00:41:58 手机定位技术交流文章
精讲 串口通信协议 , 小白少走弯路的东西
//
/
今年年初,我创立了一个介绍性方案。你可以免费获得它,如果你想要的的话。你可以依靠我。
哦
~
你可以像黑字和我的土白金一样得到我的头。 幸运的是,你一直忙碌, 在一个基础上, 并且把孩子带到省一级或更高一级。
赛
///
但许多人还没有读过其中的复杂之处,这篇论文十分详细,并将在协议中深入阐述。
1 、串口协议简介
什么是串口通信?
简而言之,连环通信是通过一条线索进行的。 ( T X 只需提及发送。当然,它仍然被覆盖。 括 GN D ),将需要的数据 按 bi t 流动流向接收端,由于这些流动是通信,应由所涉各方制定数据传输的程序和标准。
您可以随时打开序列助手。如果您想要使用序列,必须指定端口、端口费率、数据比特、停止比特、检查位置和流程控制等规格。
如果接收和传输端的配置不同,则可能发生数据异常。
端口:这是不言自明的:插入序列芯片,并在计算机上显示端口号。
现在,我们研究一下港口费率、数据位置、停靠位置、校准位置和流量控制(因为很少使用)在平方信号方面的作用。
2 、电平信号分析
开放串行工具, 独立修改以下设置 。
① 调整参 数 9600/8/N/ 1 ,发送十六进制数 据 55 AA

② 调整参 数 115200/8/N/ 1 发送十六进制数 据 55 AA

③ 调整参 数 9600/7/N/ 1 发送十六进制数 据 55 AA
④ 调整参 数 9600/8/O/ 1 发送十六进制数 据 55 BA
⑤ 调整参 数 9600/8/E/ 1 发送十六进制数 据 55 BA
⑥ 调整参 数 9600/8/N/ 2 发送十六进制数 据 55 AA
其 中 B 代表起始位 , E 显然,这是首先通报的。 低 bi t ,再传输的 高 bi t 。
根 据 ① ② 分析,调整 波特率 它对波浪的整体形式没有影响,只是.. 有 bi t 的持续时长不同 , 960 0 波特率时的一 个 bi t 大概 占 104u s , 11520 0 波特率大概 是 9u s ,这是可以算出来 的 960 0 : 1000ms/9600 = 104.1u s , 11520 0 : 1000/115200=8.6u s 传送速度越快,港口费率越高。
根 据 ① ③ 分析,调整 数据位 后 , 5 5 本来应该 是 0101010 1 但是数据位调整 到 7 之后 , 5 5 变成 了 101010 1 , A A 本来 是 1010101 0 变成 了 010101 0 一般而言,数据位设置不修改,除非有独特的需要。
根 据 ①④ ⑤ 分析,将 校验位 调整至奇校 验 (ODD ) 后,传输 的 bi t 还有另外一种奇怪的校准, 这意味着如果它处于第一位, 它就处于第一位。 的 8 个 bi t 的 bi t 位数是偶数, 顶部需要一个位数 。 位 1 ,否则 补 0 , 5 5 传输变成 了 (1)0101010 1 , B A 变 成 (0)1011101 0 ,同样偶校验 ( EVE N ) 、 MAS K 校验(校验位始终 为 1 ) 、 SPAC E 校验(校验位始终 为 0 )是相同的道理。
根 据 ① ⑥ 分析,将 停止位 设置 为 2 ,转让的结论(如图所示) 的 E )变成之前 的 2 乘法 。 分析 。 设置停止位, 在数据传输完成后调整停止位置 。 位 bi t 持续的时间。
3 为什么开始和结束?
一般理解波段、数据比特和校准是为了满足各种业务要求,但开始和停止位置的目的是什么?
起始位置:通常,电线是高层次的,探测到接收数据的低层次信号,发送者可以借此告诉接收者接受数据。 (不考虑液体控制)
停止点:发送方将结束交货的方法通知接收方。 , “ 暂停一 会 ” 继续发送以下字节 。
“最初姿势的目的显而易见,但为什么停止呢?” 质疑这位华丽的男人。这并非总能达成一致。 输 8 个 bi t ,接收方不能就接受 到 8 个 bi t 此后,一个字节传输被视为已完成。 就 O K 了吗?
考虑这个阶段是个好主意。如果我们是设计师, 我们会为接收数据创建一个虚构的代码。
/ / 接收端接收数据线程
while(1) {
/ / 楼下,我得到了一个启动。
if((isGetStartFlag == 0) && getDownEdge()) {
Delayus(52);
/ / 检测起始位低电平
if(isLowPin()) {
isGetStartFlag = 1;
getBitIndex = 0;
}
}
/ / 已经接收到起始位
if(isGetStartFlag) {
Delayus(104);
if(getHighOrLow() == high) {
/ / 接收 到 1bit
}else {
/ / 接收 到 0bit
}
getBitIndex++;
if(getBitIndex == 8) {
/ / 字节接收完成
isGetStartFlag = 0;
getBitIndex = 0;
}
}
}
如果没有停留地点,根据这种假编码推理,存在两个困难。
1 我们也许无法避免最坏的情况。
如果转让了最后字节 是 0 ,以及以下字节的开始 是 0 我将再次问那个帅哥。 如果下一个字节的开始没有被识别, 下一个字节的转换无法启动, 数据丢失了。 我不会看负面的; 我只会看低层次的 。 把 getDownEdg e 换 成 isLowPi n 功能是好的,这将导致 第二次调查。
2 、时钟同步问题
假 设 A 跟 B 说 , 1 0 确实,你让我在一分钟内喝水。 后 B 就看着自己的表 , 1 0 分钟后提 醒 A ,这 时 A 一看表,才过 去 9 场景的真相将出现, 事业将随之而来。 是 A 和 B 它不同步, 或正在引入错误 。 了 A 和 B 所指 的 “ 1 0 分 钟 ” 这不一样,是发件人和收件人 了 960 0 这就是安排,波特的费率 了 104.1u s 根据上述虚构代码,应发送一个字节,并设立几个收集点。
然而,由于错误,这可能导致收集点被转用于:
这两张照片显示时钟没有同步, 导致接收器的接收点转移, 如果在那一刻插入停止位置, 第二张图像就会出现 。 个 BYT E 因为它仍在从开始的下降线中收集, 它被重置到顶部。 个 BYT E 引入的误差。
4 、总结
它基本上是对序列协议的全面调查, 重要的是从设计的角度来考虑这个设计的功能, 如果有什么问题, 请指出来。 。
本文由 在线网速测试 整理编辑,转载请注明出处。