ST意法半导体
直播中

哈哈哈

11年用户 963经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

如何计算PEC值?

我正在研究 SMBus 通信,我想计算 PEC(数据包错误代码)值。PEC 值使用带有 0x07 多项式的 CRC-8 校验和。我想在 STM32G031F6 中使用 CRC 外设进行 PEC 计算。Cubemx 设置如下。

代码在这里;
  • CRC_Data[0] = 0x16;
  • CRC_Data[1] = 0x0f;
  • CRC_Data[2] = 0x17;
  • CRC_Data[3] = 0xe9;
  • CRC_Data[4] = 0x03;
  • SMBus_PEC = HAL_CRC_Calculate (&hcrc, CRC_Data, 5);
SMBus_PEC 值为 0x54 但这是错误的。它必须是 0xE8。我正在使用此站点的在线 CRC 计算进行计算 ==>
我从SMBus上读到的PEC值也是0xE8。另外,当我手动计算时,我得到相同的值。
问题是什么?









回帖(1)

曾顺

2022-12-12 11:01:21
CRC_Data[] 是字节数组吗?
在debugger中观察,在disasm中单步执行,到底是怎么做的(是用str还是strb,CRC寄存器的内容到底是什么等等)
JW
PS 我试图在 0x16 0x00 0x00 0x00 0x0f 上计算这个 CRC,如果你将 CRC_Data[] 定义为单词,你会得到什么,它给了我 0x54
举报

更多回帖

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