ARM基础(5) ARM通讯接口

本文详细介绍了ARM处理器中常见的通讯接口,包括串口通讯的基础概念,如开始位、停止位、校验位,以及如何处理传输错误。进一步探讨了全双工、单工和半双工的差异,并重点讲解了半双工通讯协议I2C,强调了时钟线在提高通讯速度和减少错误中的关键作用。最后提到了并行通讯和SPI协议,指出串行通讯在速度上的局限性,以及在底层开发中的应用。
摘要由CSDN通过智能技术生成

设备间进行通信实现得话,
在这里插入图片描述

如果把之前得等当成是一个设备得话, 那我们要控制一个灯得话, CPU是不是有一根线接到灯上, 使这个管脚输出 高电频和低电频控制这个灯亮, 控制灯得操作 ,

那怎么才能实现通讯,最起码要有一根线, 那一根线怎么实现通讯, 我们CPU里面有个0x05如果从CPU传递到我们设备这里是如何做到得 ? CPU线可以把某一个管脚控制输出高电频和低电频状态 , 高1 和 低0 ,那么设备之间, 接收数据怎么接收 ? 我们可以把这个管脚设置为输入状态 , 管脚只有两种状态, 1 或者 0,要么是高电频要么是低电频, 那我们CPU怎么把一个0x05数传到设备这里来呢 ?我们只要能把这个数传过来, 其他得这个图片啊图像这些 最终是不是转换成这些数据, 一个数据能传十个数据也能传 , 那么0x05这个数怎么从CPU传到设备里面去呢 ? 数字电路传得最原始得就是 0 和 1 , 最原始得二进制 , 0000 0101 这个是这个0x05得二进制 ,那我们怎么把这个数据传过去呢 ? 一个设备检测得时候只能检测一根管脚1 和 0, 高电频低电频就对应着 1 和 0 ,我们传得时候如果按先后顺序 ,我们可以约定
在这里插入图片描述
那传 0x00 或 0xFF ,
管脚 如果你不传数据得时候 , 默认是什么状态, ? 一般情况下我们默认得时候会把这个管脚得这个线进行上拉或者下拉 , 上拉就是把这个管脚上面(会把它悬空), 加个电阻vcc 接上电源 , 上拉过后就是不通讯得时候默认管脚就是高电频, 反之下拉就是接电阻接地默认就是低电频 , 大多数情况下很多设备是上拉得方式, 上拉了也就是说这个设备读到得数据一直是1 , 假如我们CPU想传 0xFF这个数据呢 ? 这个数据你怎么区分呢 ? 那么这就提出了一个开始位 和 停止位得概念 , 我要进行区分 , 两个设备进行通讯这个协议是双方协商好的, 我们可以约定得,我们可以根据情况去约定, 比如说 : 约定我把这个管脚(默认是高电频上拉) 我把它拉低一段时间比如说 10毫秒,或者20毫秒, 用于区分空闲状态和有数据状态,
在这里插入图片描述
默认是高电频, 拉低一段时间 , (你也可以拉低一段时间,然后再拉高一段时间,这个约定自己定) , 为了区分空闲状态和有数据状态, (传数据的时候从高位开始传, 或者从低位开始传都行, 自己约定好, )
传输数据的时候如果出错了怎么办 ? 如果把0x05 读成了0x04 因为是高低电频变化 , 通过读这个管脚的状态决定的 ,比如说刚好是边缘状态 , 就是说这个CPU把这个管脚变成高电频或低电频 要等待一段时间, 这段时间这个设备等待接收端去读取这个管脚的电频, 两个设备是不知道对方的存在的, CPU只是把这个管脚按波形 ,按一定的时序进行波形改变 , 设备端去接收 ,双方是不知道对方存在的, 在接收数据的时候刚好是在边缘状态 ,CPU刚好由1变为0 或者由0变为1 , 边缘状态是 0还是1, 就有可能把它读错 , 或者在传输过程中有外部设备电磁干扰了, 本来应该是低电频的, 结果变高了 ,干扰了出错了,导致我们的设备端 , 接收数据出错, 这个时候这么去处理 ? 这就提出了一个概念叫 ,校验码 ,

奇偶校验

校验位 : 我们传输过程中, 一般情况下干扰或者出错, 一般情况下是某一个位读错了 , 两个位同时读错的概率比较小,
这个位会根据1的个数进行改变 , 如是1的个数为奇数那校验位就为1 , 如果1的个数为偶数那校验位就为0 , 通过这种方式去检测数据是否出错, 这个不可能百分之百解决问题, 假如如果两个位同时出错了, 整个数据传输完过后, 比如说你有一个文件, 它是100个数据1000个数据, 我们可以在文件结束的时候加一个 校验码 , 校验码可以加一个算法的也许 ,也就是说 不管用哪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值