循环冗余校验确保正确的数据通信

分享到:

在工业环境中,电子系统通常工作在极端的温度条件下,或处于电子噪声环境,或是其它恶劣条件,而系统在这种条件下能否正常工作至关重要。举例来说,如果发送给控制机器臂位置的DAC 的数据遭到破坏,机器臂就会按非预期的方向移动,这不仅危险,而且代价巨大。试想一下,机器臂如果砸到生产线上的新车,或者更糟,砸到生产工人,后果会怎样?
有几种方法可以确保收到正确数据后才执行动作。最简单的方式就是控制器回读所发送的数据。如果接收的数据与发送的数据不匹配,则说明其中一者已受到破坏,必须发送新数据并进行验证。这种方法的确可靠,但产生的开销也很大,每段数据都必须经过验证,传输的数据量要翻一倍。
另一种替代方法是循环冗余校验(CRC),即随每个数据包发送一个校验和(checksum),接收器就会指示是否存在问题,所以控制器无需验证接收。校验和一般通过向数据应用一个多项式方程式来生成。应用于一个24 位字时,CRC-8 可产生一个8 位校验和。将校验和与数据组合在一起,全部32 位都发送到能够分析该组合的器件,并指示是否出错——这种方法虽然不是无可挑剔解决方案,但却比读写方法更加高效。
ADI 公司的众多DAC 都采用了分组差错校验(PEC)的形式来实现CRC。不需要PEC 功能时,则写入24 位数据。要添加 PEC 功能,24 位数据需增加相应的8 位校验和。如果接收的校验和与数据不一致,输出引脚被拉低,指示存在错误。控制器清除错误,使引脚返回高电平,并重新发送数据。图1 所示为如何用SPI 接口应用数据的示例。表1 列出了能够采用分组差错校验的ADI 器件示例。

图1. 采用和不采用分组差错校验的SPI 写入

表1. 采用分组差错校验的ADI 器件示例

生成分组差错校验和
CRC-8 算法采用多项式 C(x) = x8 + x2 + x1 + 1. For x = 2时,此式等于二进制值100000111。要生成校验和,需将24 位数据左移 8 位,产生一个后8 位为逻辑0 的32 位数。对齐CRC 多项式,使其MSB 与该32 位数据最左侧的逻辑1 对齐。对该数据施加一个异或(XOR)函数,以产生一个新(更短)的数字。(数字匹配得到逻辑0,不匹配得到逻辑1。)再次对齐CRC 多项式,使其MSB 与第一个结果最左侧的逻辑1 对齐,重复上述步骤。最后,原始数据将减少至小于CRC 多项式的值。此值即是8 位校验和。图2 演示了推演校验和的方法。

图2. 生成24 位数((0x654321))的校验和
结论
图2 中的示例采用(十六进制)值0x654321 作为24 位数据字。对该数据应用CRC-8 多项式可生成校验和0x86。数据和校验和发送至兼容的ADI 公司产品时,只有两段数据都正确到达,该数据才会被接收。此方法提高了数据传输的可靠性,并可确保遭破坏的数据几乎永远不会被接收。
 

继续阅读
航空电子快速崛起,C919大飞机首飞功不可没

航空领域一直是世界各国争相发展的一大重要军事民用的地方,航空技术的发展程度也被人们对比于国家科技的发达程度,航空技术越发达也代表国家的科技水平越发达。我国作为世界上第二大经济体,科技也是在近十年来发展异常迅速,其中在航空领域,我也有有诸多建树。

物联网设备电池寿命如何计算?

从公共汽车站的标牌到联网的复杂工业系统,大部分电子系统的设计方式因互联网而发生了极大的改变。其中,最大的变化或许是引入了收集数据并将信息传递至云端的传感器系统。

汽车电子系统的低油耗设计

前言   我们如何才能使汽车驾驶室具 备更多的功能,使发动机具有更大的功率,同时还能够符合各国政府对每加仑行驶距离的要求?只有采用新一代的低导通电阻功率MOSFET将汽车中传统的电力

使用光纤升级现有的工业网络

工厂自动化、控制和管理已经成为全球供应链的决定性竞争力,举例来说,大批量生产的消费类产品和汽车制造都需要安全、高成本效益并且稳健的数据通信以确保可以对如果没有快速受到处理,便可能引起严重利润损失和消费

汽车系统中的功率电子技术

一、导言  汽车中使用电子产品可以追溯到使用电动启动器替代手动曲柄的20世纪初。上世纪60年代,随着固体电子产品的出现,汽车电子开始盛行起来。现今存在着几种推动汽车市场对电子产品的需求,尤其是功率

精彩活动