CRC8上的位数不均匀 - 初始0xff

时间:2015-04-18 16:26:57

标签: crc

nRF24 CRC -1字节使用多项式 x ^ 8 + x ^ 2 + x ^ 1 + 1 初始 0xff的。 这必须在一定数量的位上完成。怎么计算?我无法得到相同的结果。例如:二进制

开:000000000000000100010000000000000100000100000100000111111 nRF24 会给出 CRC8 :01110110(0xbb)

知道如何计算吗?

1 个答案:

答案 0 :(得分:1)

这会从数据中生成0x76

#include <stdio.h>

unsigned crc8bit(unsigned crc, unsigned bit)
{
    crc ^= bit << 7;
    return (crc & 0x80 ? (crc << 1) ^ 7 : crc << 1) & 0xff;
}

int main(void)
{
    unsigned n, crc;
    unsigned char data[] = "000000000000000100010000000000000100000100000100000111111";

    crc = 0xff;
    for (n = 0; n < sizeof(data) - 1; n++)
        crc = crc8bit(crc, data[n] & 1);
    printf("crc = %02x\n", crc);
    return 0;
}