通信CRC校验是必须的,为了降低通信长度,采用了CRC8校验算法。
算法顺利通过了测试,附有源程序,共享出来给大家用啊
源程序如下:
- /* 函数名: cal_crc8_07
- * 参数[in]: len 待校验数据长度
- * 参数[in]: ptr 待校验数组数据首地址
- * 返回值[out] : 返回ptr为首地址数据长度为len的 CRC8的检验码(多项式为 07)
- */
- unsigned char cal_crc8_07(unsigned char len , unsigned char *ptr)
- {
- unsigned char i;
- unsigned char crc=0;
- while(len--!=0)
- {
- for(i=0x80; i!=0; i=i>>1)
- {
- if((crc&0x80)!=0)
- {
- /* 余式CRC乘以2再求 CRC */
- crc*=2;
- crc^=0x07;
- }
- else
- {
- crc*=2;
- }
- if((*ptr&i)!=0)
- crc^=0x07; /* 再加上本位 CRC */
- }
- ptr++;
- }
- return(crc);
- }
复制代码
所有资料51hei提供下载:
CRC8校验方法.zip
(5.76 MB, 下载次数: 22)
|