当前位置: 首页 > 知识库问答 >
问题:

CRC-8值失配

房唯
2023-03-14
0xC0 0x81 0x04 0x02 0x02 0x00 0x55

这意味着计算CRC所考虑的数据实际上是0xC00x01 0x04 0x02 0x02 0x00(第二个字节是0x01而不是0x81)。

根据我在维基百科上可以找到的,“CRC=X8+X5+X4+1”意味着他们使用“CRC-8-Dallas/Maxim”。

但是,当我使用https://crccalc.com/时,输入c00104020200并点击“calc-crc-8”它报告“crc-8/maxim”0x82,而不是0x55。我是不是漏掉了什么?

更多来自嗅探器的示例:

  • C0 81 03 02 02 00 D3,所以C0 01 03 02 02 00CRC是D3
  • C0 81 05 02 02 00 DA,所以C0 01 05 02 02 00CRC是DA

共有1个答案

狄卓君
2023-03-14

对于两个示例,您可以对它们进行异或,这消除了初始值和最终异或,就像两者都是00一样:

C0 01 03 02 02 00 CRC is D3
C0 01 05 02 02 00 CRC is DA
---------------------------
00 00 06 00 00 00 CRC is 09

这确认CRC多项式为0x31(反向为0x8C),输入反射,结果反射。

使用初始值0xDE不起作用,所以我试着将这些位反转为0x7B,这对问题中的三个例子有效。所以初始值==0x7b,多项式也会从0x31位反向到0x8c,但在线计算器使用非反向多项式0x31。如果单击“显示反射查找表”,计算CRC,然后查看第8行Byte0,您将看到0x8C。

 类似资料:
  • http://www.lammertbies.nl/comm/info/crc-calculation.html http://www.codeproject.com/articles/19059/c-ccitt-crc-algorithm 在上面与字节数组{0xee,0x01,0x13,0x00,0x06,0x1c,0x00,0x20,0x1d,0x00,0x00}的链接中,它使用CRC8(po

  • 进入这个问题,我对典型的CRC算法的内部工作几乎一无所知。最初,在尝试代码解决方案之前,我尝试对输入字节进行手工计算,以确认我对algo的理解。这包括用我的0xff初始值对第一个输入字节进行XOR,然后跳到第二个输入字节继续XOR操作。 多次尝试通过典型的XOR操作来确认CRC,同时在每一步期间将MSB移出寄存器,但我始终无法得到我想要的结果。今天,我意识到0xea多项式也被认为是0xd5多项式的

  • 第一个64字符行的CRC(“这是教训:永不屈服,永不屈服,永不,永不,)应该是000015FA,我得到的是BFE6EC00。 我的逻辑是: > 在CRCCalculation中,我将每个字符添加到一个32位无符号整数中,并在64(一行长度)之后将其发送到XOR函数中。 代码:

  • 这是calculate_CRC16函数:

  • 我需要帮助试图验证CRC-16值(也需要帮助与CRC-32值)。我试图坐下来了解CRC是如何工作的,但我一片空白。 更多信息如下: --编辑-- 我已经包括了更多的信息。我引用的文档是TIA-102.BAAA-A(来自TIA标准)。以下是文档陈述的内容(试图尽可能避免侵犯版权): FM(x)的系数被放置在CRC字段中,其中CRC的第0个八位元组的MSB对应于x^31,而CRC的第3个八位元组的LS