打印
[其他MCU]

MC56F84XXX系列CRC模块计算错误问题

[复制链接]
979|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaofei0013236|  楼主 | 2015-7-30 11:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[Kinetis] 手把手学会官方例程第二十六篇:Kinetis 120MHz主频芯片CRC 例程(https://bbs.21ic.com/icview-679844-4-1.html)的帖子已经参考过了。
基本上已经把CRC弄懂了,通过Visual studio写的C程序能够实现各种格式的CRC校验。
包括CRC-16,CRC-16(MODBUS),CRC-CCITT(XModem),CRC-CCITT(0xFFFF),CRC-CCITT(0x1D0F),等。
现用该芯片的CRC模块,选择16bits(TCRC=0),先置WAS=1,写入CRC_CRC=65535作为0xFFFF的SEED,TOT,TOTR都为0.
计算出的结果却是SEED=0x1D0F的结果,即CRC-CCITT(0x1D0F)格式的值。
求大神指点,不甚感激!

相关帖子

沙发
xiaofei0013236|  楼主 | 2015-7-30 11:22 | 只看该作者
有没有前辈高手来解答下,谢谢

使用特权

评论回复
板凳
FSL_TICS_ZJJ| | 2015-7-31 09:24 | 只看该作者
你输入的多项式是CRC-CCITT的吗?
CRC-CCITT也是CRC16的一种,只是和CRC16的多项式有些区别。
你输入多项式是什么?

使用特权

评论回复
地板
xiaofei0013236|  楼主 | 2015-7-31 09:48 | 只看该作者
FSL_TICS_ZJJ 发表于 2015-7-31 09:24
你输入的多项式是CRC-CCITT的吗?
CRC-CCITT也是CRC16的一种,只是和CRC16的多项式有些区别。
你输入多项式 ...

输入多项式是CRC_GPOLY的默认值0x1021.(飞思卡尔的CRC硬件上应该是左移的吧?)
不然也不会得出CRC-CCITT(0x1D0F)格式的CRC值吧,而且测试过各种输入值,得到的CRC值都与CRC-CCITT(0x1D0F)格式的吻合。

使用特权

评论回复
5
侣行天下| | 2015-7-31 14:15 | 只看该作者
帮楼主顶一下,期待早日解决问题

使用特权

评论回复
6
xiaofei0013236|  楼主 | 2015-7-31 14:28 | 只看该作者
侣行天下 发表于 2015-7-31 14:15
帮楼主顶一下,期待早日解决问题

谢谢前辈!

使用特权

评论回复
7
xiaofei0013236|  楼主 | 2015-8-3 09:55 | 只看该作者
有没有用过的前辈来指导下,谢谢

使用特权

评论回复
8
xiaofei0013236|  楼主 | 2015-8-18 09:31 | 只看该作者
问题已解决,CRC寄存器为32位,即使在16bits模式下,CRC的高16位也会参与CRC计算。但楼主在写入信息时赋值的是整个CRC寄存器,例如想写入0x0010,其实写入的是CRC=0x00000010。正确做法应为CRC_LOW16=0x0010。
谢谢各位。
麻烦版主结贴。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

13

帖子

0

粉丝