nRF24 , CRC -1字节使用多项式 x ^ 8 + x ^ 2 + x ^ 1 + 1 初始 0xff的。 这必须在一定数量的位上完成。怎么计算?我无法得到相同的结果。例如:二进制
开:000000000000000100010000000000000100000100000100000111111 nRF24 会给出 CRC8 :01110110(0xbb)
知道如何计算吗?
答案 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;
}