一、多种生成多项式
二、CRC-8校验算法的特点
只有8位,1个字节的校验长度,所以其优点挺明显的:
1.高效性:CRC-8算法计算速度快,适用于高速数据传输和实时性要求高的场景。
2.错误检测能力强:CRC-8校验算法能够检测出多位错误,并且对于随机错误和突发错误都有较好的检测效果。
3.实现简单:CRC-8算法逻辑清晰,易于编程实现,并且硬件实现也较为简单。
也是因为其仅有8位,1个字节的校验长度,其缺点也是显而易见的:校验数据长度有限。因为仅有1个字节的结果,其对数据量高于128字节的情况就有些捉襟见肘了。所以在短包中其较为常见。
三、典型应用场景
CRC-8的典型应用场景还是在于少量数据量的校验过程。我在平时的项目开发主要将CRC-8校验算法应用于以下几个场景:
1.数据帧格式中的帧头部分校验。帧头一般包含类型,payload数据长度等关键信息,如果帧头出现错误,则后续的数据瞬间成为了无序状态,也容易导致内存溢出等严重事故发生;
2.I2C数据通讯。I2C通讯做为片上通讯,每次通讯的数据内容非常有限,添加CRC-8校验后可以使得传感器回传中导致的异常数据在滤波处理前剔除掉,避免影响采集数据的稳定;
3.EEPROM存储中,每个block添加一个字节的CRC-8,来保证写入数据的正确性,完整性。