CRC的原理此处不再赘述,具体的函数实现代码如下:
BYTE FormCRC4(BYTE* pData, Uint16 Length)
{
BYTE tempRegs, tempResult;
BYTE midval;
Uint16 i, j;
midval = 0x13;
tempRegs = *pData++;
tempRegs ^= 0xff;
i = 0;
while(i < Length)
{
for(j = 0; j < 8; j++)
{
if (tempRegs & 1)
{
tempRegs >>= 1;
tempRegs ^= midval;
}
else
{
tempRegs >>= 1;
}
}
if (i++ == (Length - 1)) return tempRegs;
tempResult = *pData++;
tempRegs ^= tempResult;
}
return 0;
}