文章转自ADI官网,版权归属原作者一切
在工业环境中,电子体系一般作业在极点的温度条件下,或处 于电子噪声环境,或是其它恶劣条件,而体系在这种条件下能 否正常作业至关重要。举例来说,假如发送给操控机器臂方位 的DAC 的数据遭到损坏,机器臂就会按非预期的方向移动, 这不只风险,并且价值巨大。试想一下,机器臂假如砸到出产 线上的新车,或许更糟,砸到出产工人,成果会怎样?
有几种办法可以保证收到正确数据后才履行动作。最简略的方 式便是操控器回读所发送的数据。假如接纳的数据与发送的数 据不匹配,则阐明其间一者已受到损坏,有必要发送新数据并进 行验证。这种办法确实牢靠,但发生的开支也很大,每段数据 都有必要经过验证,传输的数据量要翻一倍。
另一种代替办法是循环冗余校验(CRC),即随每个数据包发 送一个校验和(checksum),接纳器就会指示是否存在问题, 所以操控器无需验证接纳。校验和一般经过向数据使用一个多 项式方程式来生成。使用于一个24 位字时,CRC-8 可发生一 个8 位校验和。将校验和与数据组合在一起,悉数32 位都发 送到可以剖析该组合的器材,并指示是否犯错——这种办法虽 然不是无可挑剔解决方案,但却比读写办法愈加高效。
ADI 公司的很多DAC 都选用了分组过失校验(PEC)的方式 来完成CRC。不需要PEC 功用时,则写入24 位数据。要添加 PEC 功用,24 位数据需添加相应的8 位校验和。假如接纳的 校验和与数据不一致,输出引脚被拉低,指示存在过错。操控 器铲除过错,使引脚回来高电平,偏重新发送数据。图1 所示 为如何用SPI 接口使用数据的示例。表1 列出了可以选用分组 过失校验的ADI 器材示例。
表1. 选用分组过失校验的ADI 器材示例
产品型号 | 描绘 |
AD5360/AD5361 | 16通道、16 位/14 位、±10 V DAC |
AD5362/AD5363 | 8通道、16 位/14 位、±10 V DAC |
AD5748 | 电流/电压输出驱动器,合适工业使用 |
AD5749 | 电流输出驱动器,合适工业使用 |
AD5750/AD5750-1 | 电流/电压输出驱动器,输出规模可编程,合适 工业使用 |
AD5751 | 电流/电压输出驱动器,合适工业使用 |
AD5755/AD5735 | 4通道、16 位、4 mA 至20 mA 电流和电压输出 DAC |
AD5757/AD5737 | 4通道、16 位、4 mA 至20 mA 电流输出DAC |
ADT7470 | 温度传感器集线器和电扇操控器 |
生成分组过失校验和
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 中的示例选用(十六进制)值0x654321 作为24 位数据字。 对该数据使用CRC-8 多项式可生成校验和0x86。数据和校验 和发送至兼容的ADI 公司产品时,只要两段数据都正确抵达, 该数据才会被接纳。此办法提高了数据传输的牢靠性,并可确 保遭损坏的数据简直永久不会被接纳。