CRC3代码
在做SPI通信时用到了CRC3校验
看了很多代码终于整理出一版。
u1 crc3_high_first2(u4 spi_frame)
{
u1 i;
u4 crc=spi_frame; /* 计算的初始crc值 /
u4 chk = 0x08;
u4 poly = 0x0B; / 多项式1011 */
chk <<= 20;
poly<<= 20;
for (i=0; i<21; i++) /* 下面这段计算过程与计算一个字节crc一样 */
{
if (crc & chk)
{
crc ^= poly;
}
chk >>= 1;
poly >>= 1;
}
return ((u1)(crc));
}
另外之前搜集的多字节,单字节crc
/* 多个字节 的crc校验代码 */
u1 crc8_high_first(u1 ptr, u1 len)
{
u1 i;
u1 crc=0x00; / 计算的初始crc值 */
while(len--)
{
crc ^= *ptr++; /* 每次先与需要计算的数据异或,计算完指向下一数据 */
fo