英飞凌
直播中

久醉不醒

10年用户 1121经验值
擅长:可编程逻辑 电源/新能源
私信 关注

如何计算BMHD中的逆CRC值?

我想知道如何计算 BMHD 中的逆 CRC 值。
Ifx_Ssw.h中的示例为例 Ifx_Ssw_Bmhd结构的头文件和手册。
/** BMHD 的结构定义
* 根据 BMI 和起始地址计算并更新各自的 CRC 和反向 CRC 值。
* 使用 IEEE 802.3 标准中定义的 CRC-32 多项式生成 CRC 值。 CRC 算法
* 将输入数据视为比特流。
*
* 埙.要计算 CRC,数据必须按大二进制顺序给出。
* 为下列数值:
* bmi= 0x00FE
* bmhdid= 0xB359
* stad= 0xA00A0000
4.ADC 增益计算
* 输入 = 0xB35900FEA00A0000
* CRC 值 = 0x3CEED0A6
* CRC 反向 = 0xC3112F59
*/



因此,CRC 值
0x3CEED0A6
存储在内存中,因为平台是小数位:
A6 D0 3C EE -> 10100110 11010000 00111100 11101110
然后对数值进行位反转:
01110111 00111100 00001011 01100101
最后,这种情况被颠倒过来:
10001000 11000011 11110100 10011010 -> 88 C3 F4 9A
能告诉我哪里出错了吗?

回帖(1)

无人岛

2024-6-3 16:55:52
要计算BMHD中的逆CRC值,我们需要遵循以下步骤:

1. 首先,我们需要了解CRC(循环冗余校验)的概念。CRC是一种用于检测数据传输或存储过程中错误的技术。在这个问题中,我们使用的是IEEE 802.3标准中定义的CRC-32多项式。

2. 根据给定的示例,我们有以下参数:
   - bmi = 0x00FE
   - bmhdid = 0xB359
   - stad = 0xA00A0000

3. 计算CRC值:
   - 将输入数据视为比特流,按照二进制顺序排列:0xB35900FEA00A0000
   - 使用CRC-32多项式生成CRC值。在这种情况下,CRC值为0x3CEED0A6。

4. 计算逆CRC值:
   - 逆CRC值是将CRC值的二进制位反转得到的。例如,如果CRC值为0x3CEED0A6,那么逆CRC值为0xC3112F59。

5. 将逆CRC值与原始数据结合,以生成BMHD结构。在这种情况下,逆CRC值将与bmi、bmhdid和stad结合。

6. 最后,将生成的BMHD结构用于进一步的处理或通信。

总结:
要计算BMHD中的逆CRC值,首先需要根据IEEE 802.3标准计算CRC值,然后将CRC值的二进制位反转以获得逆CRC值。在这个例子中,逆CRC值为0xC3112F59。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分