这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 物联网技术 » [学习笔记]CRC校验算法之CRC-8

共3条 1/1 1 跳转至

[学习笔记]CRC校验算法之CRC-8

院士
2024-02-19 17:00:07     打赏

CRC(循环冗余校验)是一种广泛应用的错误检测算法,用于检测数据传输或存储过程中可能出现的错误。CRC校验算法的数学原理我们在上一篇文章《[学习笔记]CRC校验算法之数学原理》也作了详细介绍。CRC-8特指使用8位多项式进行校验的CRC算法,它生成的是一个8位的校验码。由于CRC-8校验算法具有高效和简洁的特点,广泛应用于各种通信和数据处理领域。

一、多种生成多项式

CRC-8校验算法有多种生成多项式,计算方式也有多种。这也就使得在实际应用中要仔细区分具体的校验算法。我在这里列了一个表,供大家参考:

CRC-8_01.png

我们再做一个实验,以“Hello EEPW!"字符串为内容,校验生成CRC-8计算结果,看看上述4种算法的结果:

CRC-8_02.png

二、CRC-8校验算法的特点

只有8位,1个字节的校验长度,所以其优点挺明显的:

  1. 1.高效性:CRC-8算法计算速度快,适用于高速数据传输和实时性要求高的场景。

  2. 2.错误检测能力强:CRC-8校验算法能够检测出多位错误,并且对于随机错误和突发错误都有较好的检测效果。

  3. 3.实现简单:CRC-8算法逻辑清晰,易于编程实现,并且硬件实现也较为简单。

也是因为其仅有8位,1个字节的校验长度,其缺点也是显而易见的:校验数据长度有限。因为仅有1个字节的结果,其对数据量高于128字节的情况就有些捉襟见肘了。所以在短包中其较为常见。

三、典型应用场景

CRC-8的典型应用场景还是在于少量数据量的校验过程。我在平时的项目开发主要将CRC-8校验算法应用于以下几个场景:

  1. 1.数据帧格式中的帧头部分校验。帧头一般包含类型,payload数据长度等关键信息,如果帧头出现错误,则后续的数据瞬间成为了无序状态,也容易导致内存溢出等严重事故发生;

  2. 2.I2C数据通讯。I2C通讯做为片上通讯,每次通讯的数据内容非常有限,添加CRC-8校验后可以使得传感器回传中导致的异常数据在滤波处理前剔除掉,避免影响采集数据的稳定;

  3. 3.EEPROM存储中,每个block添加一个字节的CRC-8,来保证写入数据的正确性,完整性。







关键词: 算法     CRC-8    

专家
2024-02-19 19:56:26     打赏
2楼

感谢分享


高工
2024-02-20 14:44:56     打赏
3楼

CRC-8的应用场景看上去挺多!

不过,为啥版主不放出来实现源代码呢!?


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]