我正在使用一个需要我生成16位CRC的设备.
该设备的数据表显示它需要以下CRC定义:
CRC Type Length Polynomial Direction Preset Residue CRC-CCITT 16 bits x16 + x12 + x5 + 1 Forward FFFF (16) 1D0F (16)
其中预置= FFFF(16位)和残留= 1D0F(16位)
我搜索了一个CRC算法并找到了这个链接:http: //www.lammertbies.nl/comm/info/crc-calculation.html
它有两个.CRC-CCITT(0xFFFF)CRC-CCITT(0x1D0F)
预设和残留物有什么区别?
在输入消息之前,使用预设初始化CRC寄存器.
在通过消息馈送之后,残留物应该留在CRC寄存器中,加上正确的CRC.
如果您只想发送消息,则不会看到残留值.但是当设备再次通过CRC算法运行您的消息+ CRC时,如果没有传输错误,它将看到最终值0x1D0F.
您也可以在不涉及设备的情况下向自己演示.这可以帮助您确认您的算法正在执行至少类似于CRC的操作.
我发现的最好的CRC解释是:
https://archive.org/stream/PainlessCRC/crc_v3.txt
| 归档时间: |
|
| 查看次数: |
5768 次 |
| 最近记录: |