如何计算初始值为0xFF和多项式0x1D的4个字节(00 00 0C 05)的crc8_sae_j1850?

问题描述 投票:0回答:1

我想使用命令 read_page(1100) 05(0000 0101) 读取 hitags256 页,为此我必须对 4 个字节 (00 00 0C 05) 执行 crc8_sae_j1850,多项式为 0x1D,初始值为 0xFF。请给我一个如何继续的想法。 如果可能的话,我还想向我发送解决此问题的例程,该例程可以选择打印获得的值。 谢谢你。

search software-design crc
1个回答
0
投票

您没有指定语言。 crcany 为具有该名称的 CRC 生成此 C 代码:

#include <stddef.h>
#include <stdint.h>

uint8_t crc8sae_j1850_bit(uint8_t crc, void const *mem, size_t len) {
    uint8_t const *data = mem;
    if (data == NULL)
        return 0;
    crc = ~crc;
    for (size_t i = 0; i < len; i++) {
        crc ^= data[i];
        for (unsigned k = 0; k < 8; k++) {
            crc = crc & 0x80 ? (crc << 1) ^ 0x1d : crc << 1;
        }
    }
    crc = ~crc;
    return crc;
}

您仅指定了部分 CRC 参数。您还需要说明最终的异或是

0xff
,并且这些位没有被反映。

© www.soinside.com 2019 - 2024. All rights reserved.