MIPI_BaseC_WebinarFRTK/21_Seminar08/04_crc8_p19_20.c

34 lines
779 B
C
Raw Normal View History

2024-11-13 09:22:28 +03:00
#include <stdio.h>
/* Name : CRC-8
Poly : 0x31 x^8 + x^5 + x^4 + 1
Init : 0xFF
Revert: false
XorOut: 0x00
Check : 0xF7 ("123456789")
MaxLen: 15 байт(127 бит) - обнаружение одинарных, двойных, тройных
и всех нечетных ошибок */
unsigned char Crc8(unsigned char*pcBlock, unsigned int len)
{
unsigned char crc=0xFF;
unsigned int i;
while (len--)
{
crc^=*pcBlock++;
for (i =0; i <8; i++)
crc=crc&0x80? (crc<<1) ^0x31:crc<<1;
}
return crc;
}
int main(int argc, char **argv)
{
unsigned char arr[] = {'1','2','3','4','5','6','7','8','9',0};
arr[9] = Crc8(arr,9);
printf("%x \n",Crc8(arr,9));
arr[3]=7;
printf("%x \n",Crc8(arr,9));
return 0;
}