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