2015-04-18 7 views
1

на nRF24, CRC -1 байт использование полином х^8 + х^2 + х^1 + 1 с начальным 0xff. Это должно быть сделано с нечетным количеством бит. Как это рассчитывается? Я не могу получить такой же результат. Например: в двоичнойCRC8 на нечетное число битов - начальный 0xff

на: 000000000000000100010000000000000100000100000100000111111 nRF24 придаст CRC8 из: 01110110 (0xBB)

Любая идея, как она рассчитывается?

+0

Это 0x76, не 0xBB. –

ответ

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; 
} 
+0

стыдно за меня за 0xbb вместо 0x76. – rene

+0

Это работает, было неправильно с моим пониманием полинома x⁸ + x² + x + 1 – rene

Смежные вопросы