发新帖我要提问
123
返回列表
打印

大家一般情况下用哪种CRC校验多项式?

[复制链接]
楼主: bhsdlmj
手机看帖
扫描二维码
随时随地手机跟帖
41
CRC-16的生成CRC码的特征多项式如下:
     G(X) = X16 + X15 + X2 + 1
注释:G(X)=X的16次方 + X的15次方 + X的2次方 + 1
欢迎访问www.mcu-club.com 有很多单片机技术资料,并介绍单片机学习方法

使用特权

评论回复
42
冷漠| | 2009-10-11 17:00 | 只看该作者
去楼上介绍的网站看了一眼,很多单片机资料,就是没有介绍CRC算法的。水平问题?

楼上说的CRC-16,G=18005H。能不能请教一下为什么大多数计算程序都取A001H而不是8005H ?

这么简单的问题,如果许老师答不上来,如何3500元收费办班教学生?下课?

使用特权

评论回复
43
bhsdlmj|  楼主 | 2009-10-12 11:10 | 只看该作者
chunyang说:
1.预置1个16位的寄存器(下称CRC寄存器),初试化其内容为十六进制数0xFFFF;
2.把第一个待计算的数据即通讯信息帧的首字节与CRC寄存器的低8位相异或,把结果放回CRC寄存器;
3.把CRC寄存器的内容右 ...
bhsdlmj 发表于 2009-10-10 17:24


错了 错了 嗨:P

使用特权

评论回复
44
bhsdlmj|  楼主 | 2009-10-12 11:12 | 只看该作者
去楼上介绍的网站看了一眼,很多单片机资料,就是没有介绍CRC算法的。水平问题?

楼上说的CRC-16,G=18005H。能不能请教一下为什么大多数计算程序都取A001H而不是8005H ?

这么简单的问题,如果许老师答不上来,如 ...
冷漠 发表于 2009-10-11 17:00


为什么是A001 许老师说下!!!???

使用特权

评论回复
45
冷漠| | 2009-10-12 14:35 | 只看该作者
许老师忙着收钱呢,哪有这水平?问问冷漠和HOT还差不多。

http://www.hotc51.com/HotPower_HotWC3.html

使用特权

评论回复
46
冷漠| | 2009-10-12 14:39 | 只看该作者

给个自检验例子,和下载MODBUS计算器结果一致。

本帖最后由 冷漠 于 2009-10-12 14:53 编辑

搜索一下学生D和HOT讨论CRC的帖子。

https://bbs.21ic.com/viewthread.p ... %E5%AD%A6%E7%94%9FD

快速CRC.JPG (13.39 KB )

快速CRC.JPG

使用特权

评论回复
47
xulunhuang| | 2009-10-13 09:13 | 只看该作者
的确,我们的网站www.mcu-club.com刚刚建立起来,很多学习资料还不全,请大家包涵,我们逐步丰富起来,更十分感谢大家的继续支持!!
    我正在上海出差,有奔去江苏常州谈一个有关步进马达转动力矩的项目,还好谈定了,有得忙一阵子。
    根据网友的对CRC教验的理解,回广州后我就写一下,把CRC交验的数学推理过程写出来,我会贴在本论坛,也会放在我的网站www.mcu-club.com,与大家分享。这个知识点在我们的单片机培训课程的实践过程中会遇到,通过编程实验,学生都能掌握,并熟练运用,而且我们还有产品中实际运行过的程序给我们的学生。
    有关单片机学习与培训,有几点建议:
     一,一流大学生,不要学单片机,鼓励他们考研,因为考研比学单片机有更好的前程。
     二,很聪明的学生,学习单片机,没有必要参加培训班,因为单片机其实很容易,不必花者冤枉钱。
     三,二流学生,建议你们学单片机,可以选择来我们的培训班里,20%理论,80%理论,很实用,在较短的时间里,让你少走弯路,很快就会掌握它,我们会带你走出一条很好的就业,创业,发展之路。
    至于楼上的问题,我以前也碰到有学生问过,我正在考虑是否要回答,因为以前有遇到所谓的单片机高手,本来自己不清楚问题的答案,又不回不耻下问,就对我说:我考考你,许老师,你能说出为什么CRC交验采用异或运算?
    我的意思是,在这开放的论坛平台,有问题不清楚,就不耻下问,也欢迎到我的网站www.mcu-club.com上提问,如果我们知道的话,我们也很愿意回答网友的提问,与网友分享成果;我们最反感的是以“考考你”的方式提问——小人君子才干的事!!
    (我的广告做完了),再次欢迎大家访问我的网站:www.mcu-club.com,也欢迎各位在我的网站上踊跃提问!!十分感谢大家!!!

使用特权

评论回复
48
李冬发| | 2009-10-13 20:20 | 只看该作者
A001H与8005H 的确很多人回答不了的。不过用二进制表示,多看几眼,就不一样了。

使用特权

评论回复
49
冷漠| | 2009-10-14 09:46 | 只看该作者
我现在最盼望的是许老师能给我讲讲,或者提示一下:MODBUS计算器的计算方法之原理。

例如:输入数据8000,得到余数7060。输入数据800000,输出余数2870。如何证明结论是对的?

许老师的能力不会体现在口头吧?“小人君子才干的事!!”???——注意教师的形象。

千万别收我钱的时候,一副笑脸,媚态,拿了我几千元马上就变脸啦?

使用特权

评论回复
50
bhsdlmj|  楼主 | 2009-10-14 11:40 | 只看该作者
我现在最盼望的是许老师能给我讲讲,或者提示一下:MODBUS计算器的计算方法之原理。

例如:输入数据8000,得到余数7060。输入数据800000,输出余数2870。如何证明结论是对的?

许老师的能力不会体现在口头吧?“小 ...
冷漠 发表于 2009-10-14 09:46


倒着乘, 系数为2的变为0 ,若能反推倒出表达式,就能证明是对的了!!!

另:我问题解决了!现在算的和软件一样了啊!!!哈哈
chunyang说:
1.预置1个16位的寄存器(下称CRC寄存器),初试化其内容为十六进制数0xFFFF;
2.把第一个待计算的数据即通讯信息帧的首字节与CRC寄存器的低8位相异或,把结果放回CRC寄存器;


应该是放到CRC寄存器的低8位(高8位不变)
老外写的是:
Exclusive OR the first 8-bit byte of the message with the low-order byte of the 16-bit CRC, putting the result in the CRC register.

使用特权

评论回复
51
冷漠| | 2009-10-14 13:20 | 只看该作者
本帖最后由 冷漠 于 2009-10-14 13:23 编辑

LS说的是“我现在算的和软件一样了”。所以是对的。

我的问题:何以证明MODBUS计算器软件出来的结果就是对的?就是标准?那么今后,我能不能说: 所有CRC-16结果均以bhsdlmj写的程序计算出来的余数为准?我写毕业论文:“我的程序运算结果和某某老师的程序计算出来的结果一样。”(那岂不是说,若老师错,我也错?)
计算器是以模二除法为根本依据的。输入数据80的余数是7060,没有计算机的时候,这个结果是怎么得到的。

那些“老师们”也许会说:“CRC是在计算机发明之后才产生的校验技术,没有计算机以前,根本无从谈起如何计算CRC。”

不用计算机,证明给我看?08d4a37d 的CRC-16余数是几?假定结果是7EF6,它当然是唯一解。那么反之,有没有可能还有其它数据帧会计算出同样的余数7EF6?

哈哈,许老师就怕人“考考你”,禁不住学生“考”的老师?上面这个简单的CRC问题,要是又禁不住“考考你”,再骂谁也没用。只能说明自己修炼不够,让人取笑了。跑21IC来做广告?不知道自己是谁了。

使用特权

评论回复
52
xlsbz| | 2011-5-24 12:37 | 只看该作者
这个CRC校验 据说有老外写的论文证明

使用特权

评论回复
53
hotpower| | 2011-6-22 23:16 | 只看该作者
54
hotpower| | 2017-6-6 14:04 | 只看该作者
本帖最后由 hotpower 于 2017-7-11 17:40 编辑

http://www.21ic.com/tools/HotWC3_V1.23.html

使用特权

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

本版积分规则