讲师博文
嵌入式中常见串行通信原理演示 来源 : 华清远见     2024-07-05

在小伙伴学习嵌入式的时候,往往都会对各类协议的理解和想象搞得很是头疼,因为这类实物我们实在难以看到,往往也是通过各类仪器看到一些曲曲折折的线段组成,但依旧不能形成很完善的印象,在这里呢,我就简单的打个比喻,方便大家去理解协议这一个概念,其实物理器件与器件之间进行交流(数据传输)就相当于我们和周围朋友进行聊天一样,大家如果都说着各自的方言,那么显然一定会造成沟通上的障碍,要么会错意思,要么曲解意思,因此,如果大家能够统一语言,是不是就可以完成两个人之间的无障碍沟通了,你说的我懂,我讲的你明白,这样就皆大欢喜,放在物理器件中,也是一样的道理。

协议,可以通俗理解为器件与器件之间的方言(通讯规则),当然,器件又不能完全和人类进行沟通一样,所以,需要先规定,器件A给器件B发送一个数据,那么第一个数据代表几个意思,然后每个意思怎么样去识别,第二个、第三个......如此下去,只要A器件按照这个规则发送数据,那么B数据只需要识别第一个数据的意思,那么这样就实现了数据的接受与发送。我们以串行通信为例

现在的A器件要给B器件发送数据,两个设备通过一条数据线连接(规则),然后A设备每次只能发送一个比特位的数据,然后发送多次连续的比特位数据(规则),这里要注意,因为硬件里有时钟,所以每一个比特位的数据需要的时间是固定的。(规则),

那么到这里了,就需要考虑一个问题,这么多比特位如何组合呢,所以,还规定发送数据的顺序以及如何组合的格式。

以上这个图叫做——时序图

意思就是器件之间既然要统一方言(协议规则),那么方言怎么说呢?就需要规定,A器件先发送什么,后发送什么,再发送什么,这样B器件也就按照先接受什么,再接受什么,最后接收什么的样式进行数据发送

起始位:指示数据传输开始的信号位,通常为逻辑低电平。

数据位:每个数据传输单元中实际的数据位数,通常为8位。

奇偶校验位:可选的位,用于验证数据的正确性。

停止位:指示数据传输结束的信号位,通常为逻辑高电平。

空闲位:通常用来表示数据传输未进行或通信线路空闲的状态。

假设现在A设备要给B设备发送一个数据hello

那么A设备需要做的事情就是

1.发送一个0 表示起始信号

2.发送八个bit位数据 01101000(ASCII  h的二进制)

3.发送一个奇偶校验位0/1(可选),用于接受设备判断数据是否准确

4.发送一个停止位,用来准备发送下一个ASCII数据

5.发送八个bit位数据01100101(ASCII e的二进制)

6.发送一个奇偶校验位 0/1(可选),用于接受设备判断数据是否准确

。。。。。。

直到数据发送完成

B设备要做的事情就是

1.接受一个0,接受起始信号

2.接受八个bit位数据  01101000(ASCII  h的二进制)

3.接受一个奇偶校验位,重新组装数据,与之前的数据进行对比,查看是否正确

4.接受一个停止位,用来准备接受下一个ASCII数据

。。。。。。

以上就是Uart协议进行串行通信的演示,当然,只要熟悉了通信的数据发送顺序以及意思,那么相信大家学习任何协议 应该也会手到擒来。

扫码申领本地嵌入式教学实录全套视频及配套源码

上一篇:生成式人工智能的通俗介绍

下一篇:嵌入式常用代码分享

400-611-6270

Copyright © 2004-2024 华清远见教育科技集团 版权所有
京ICP备16055225号-5京公海网安备11010802025203号