CRC

CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果 LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。

 

下面为CRC的计算过程:   

1.设置CRC寄存器,并给其赋值FFFF(hex)。   

2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。   

3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。   

4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。   

5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。   

6.重复第2至第5步直到所有数据全部处理完成。   

7.最终CRC寄存器的内容即为CRC值。

你可能感兴趣的:(CRC)