请问CRC8=X8+X5+X4+1是怎么出来的?有没有公式什么的!
请问CRC8=X8+X5+X4+1CRC-CCITT=X16+X12+X5+1
CRC16=X16+X15+X5+1
CRC12=X12+X11+X3+X2+1
CRC32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+1
这些是怎么出来的?有没有公式什么的!
以下蓝色文字由站长:armok 于:2008-08-14,14:48:58 加入。你的原标题:“<font color=black>关于CRC!” 不合符规定。请更改成能说明帖子大意的标题
试想一下,如果本论坛的帖子标题清一色的‘帮助!’,‘ADC求救!’等笼统的标题,你在阅读的过程中会造成许多麻烦。
所以本论坛规定:一定要起一个能说明帖子大意的标题。不允许“关于 AVR 的 ADC 使用!”这种笼统标题。作为标题,必须说明清楚:
①你是在请教问题,还是在介绍有关的知识?
②ADC的问题有许多,你是想说那方面的内容?
注意以上两点,标题应该改成如:“请教:ADC 可以不使用中断吗?”。
起一个能说明帖子大意的标题,除了减轻我们的帖子分类整理工作,还方便其它人阅读,节省大家的时间。
注:使用合格的标题,对你来说只是举手之劳,但却会为我们的管理工作提供很大的便利。谢谢你的支持。
./bbs_upload/files_6/armok01122228.gif 有公式, 你可以看看书, 什么是crc, 是怎么来的. 从简单的做起. 很容易就会了
比如8位奇校验,就是把8位的每一位都加起来, 看是不是奇数 谢谢老月姐姐!哈哈!我去看书! 郁闷!都看了几天书了,感觉还是没头绪呢?
我现在也知道CRC是怎么算的,大概方法就是:
如果要算0x02,也就是0000 0010的crc7
CRC7的多项式是:G(x)= x7+x3+1,也就是:0x89即:1000 1001
那么计算步骤是:
1,先将0x02左移7位,也就是在它右边加7个0.结果是:0000 0010 0000 000.
2,然后将0000 0010 0000 000与10001001相除,最后得到的余数就是CRC.
__________________1_
1000 1001 | 0000 0010 0000 000
1 0001 001
________________________
1110 111
那么CRC7就是110111,
结果最后传输的数据就是:0000 0010 1101 111,请问我的理解是不是对的?错的话,错在哪里?谢谢了! 这是gcc的CRC的C部分代码,式一下
uint8_t
_crc_ibutton_update(uint8_t crc, uint8_t data)
{
uint8_t i;
crc = crc ^ data;
for (i = 0; i < 8; i++)
{
if (crc & 0x01)
crc = (crc >> 1) ^ 0x8C;
else
crc >>= 1;
}
return crc;
} 4、CRC校验码软件生成方法:
借助于多项式除法,其余数为校验字段。
例如:信息字段代码为: 1011001;对应m(x)=x6+x4+x3+1
假设生成多项式为:g(x)=x4+x3+1;则对应g(x)的代码为: 11001
x4m(x)=x10+x8+x7+x4 对应的代码记为:10110010000;
采用多项式除法: 得余数为: 1010 (即校验字段为:1010)
发送方:发出的传输字段为: 1 0 1 1 0 0 1 1 0 10
信息字段 校验字段
接收方:使用相同的生成码进行校验:接收到的字段/生成码(二进制除法)如果能够除尽,则正确,
请问:10110010000 和 11001 进行多项式除法的结果 余数怎么是 1010 ,我算了几遍怎么是11000呢?希望高手指点指点! 同问,我看得也是这个例子,算得和楼主一样 明白了一点,crc中的除法是不带借位的减法,即逻辑上的异或,也就是说碰到被减位为0,减数为1时,结果直接为1,不用向高位借位,算完了就是1010 此问题已经解决!呵呵! X7+X6+X5+X2+1
怎么算啊? mark mark mcu5i51 发表于 2008-8-7 12:23 static/image/common/back.gif
这是gcc的CRC的C部分代码,式一下
uint8_t
0x8c是怎么来的?
页:
[1]