当前位置:  开发笔记 > 前端 > 正文

CRC预设和残留

如何解决《CRC预设和残留》经验,为你挑选了1个好方法。

我正在使用一个需要我生成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)

预设和残留物有什么区别?



1> Harry Tsai..:

在输入消息之前,使用预设初始化CRC寄存器.

在通过消息馈送之后,残留物应该留在CRC寄存器中,加上正确的CRC.

如果您只想发送消息,则不会看到残留值.但是当设备再次通过CRC算法运行您的消息+ CRC时,如果没有传输错误,它将看到最终值0x1D0F.


您也可以在不涉及设备的情况下向自己演示.这可以帮助您确认您的算法正在执行至少类似于CRC的操作.

首先,计算您的消息的CRC.

附加您的消息和CRC,然后通过新的CRC计算传递整个事物(请记住首先重置为预设值.)

如果一切顺利,您的CRC寄存器应包含残留值.


我发现的最好的CRC解释是:

https://archive.org/stream/PainlessCRC/crc_v3.txt

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有