CRC校验——以SHT4xA温湿度传感器为例
创始人
2024-03-19 03:31:30

CRC校验——以SHT4xA温湿度传感器为例

  • 一、简介
  • 二、计算方法
    • (一)步骤
    • (二)参考代码(C语言)
    • (三)检验:CRC(0xBEEF)= 0x92
  • 三、参考

一、简介

循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。

在这里插入图片描述

二、计算方法

具体参考CRC校验——以SHT30温湿度传感器为例(内附SHT30的驱动代码)

(一)步骤

(1) 预置一个值为0xFFFF的16位寄存器,此寄存器为CRC寄存器
(2) 把第一个8位二进制数与16位的CRC寄存器相异或,异或的结果存在CRC寄存器中
(3) CRC寄存器的内容左移一位,用0填补最低位,并检测移出位是0还是1
(4) 如果移出位是0,则重复步骤3,如果移出位是1,则与多项式进行异或
(5) 重复步骤3、4,直到左移8位,这样整个8位数据都进行了处理
(6) 重复步骤2~5,进行下一个字节的处理
(7)最后得到的CRC寄存器的内容即为CRC校验码

在这里插入图片描述

(二)参考代码(C语言)

#include 
typedef unsigned char uint8_t;/** crc8校验函数,data为要校验的数据,len为要校验的数据的字节数*/
uint8_t crc8(const uint8_t *data, int len)
{const uint8_t POLYNOMIAL = 0x31;uint8_t crc = 0xFF;int i, j;for (i=0; icrc ^= *data++;for (j=0; j<8; ++j) {crc = ( crc & 0x80 )? (crc << 1) ^ POLYNOMIAL: (crc << 1);}}return crc;
}int main(int argc, const char *argv[])
{unsigned char data1[2] = {0x61, 0x04};unsigned char data2[2] = {0xBE, 0xEF};printf("0x%02X\n", crc8(data1, 2));printf("0x%02X\n", crc8(data2, 2));return 0;
}
/* 输出结果
linux@linux-VirtualBox:~$ ./a.out 
0xE4
0x92
*/

(三)检验:CRC(0xBEEF)= 0x92

多项式:0x31 (x8x^8x8+x5x^5x5+x4x^4x4+1)换成二进制为 9‘b1_0011_0001
检验:CRC(0xBEEF)= 0x92

1.第一个8位数据0xBE:CRC寄存器值为8'hFF,两者异或

          1   0   1   1     1   1  1   0
XOR     1   1   1   1     1   1  1   1
————————————————————
          0   1   0   0     0   0  0   1

1)左移一位,移出0,CRC值变成

           1   0   0   0     0   0   1   0

2)左移一位,移出1,与多项式0x31异或

           0   0   0   0     0   1   0   0
XOR       0   0   1   1     0   0   0   1
————————————————————
            0   0   1   1     0   1   0   1

3)左移一位,移出0,CRC值变成

            0   1   1   0     1   0   1   0

4)左移一位,移出0,CRC值变成

            1   1   0   1     0   1   0   0

5)左移一位,移出1,与多项式0x31异或

           1   0   1   0     1   0   0   0
XOR       0   0   1   1     0   0   0   1
————————————————————
            1   0   0   1     1   0   0   1

6)左移一位,移出1,与多项式0x31异或

           0   0   1   1     0   0   1   0
XOR       0   0   1   1     0   0   0   1
————————————————————
            0   0   0   0     0   0   1   1

7)左移一位,移出0,CRC值变成

            0   0   0   0     0   1   1   0

8)左移一位,移出0,CRC值变成

            0   0   0   0     1   1   0   0


2.第二个8位数据0xEF,CRC寄存器值0x0C,两者异或:
          1   1   1   0    1   1   1   1
XOR    0   0   0   0    1   1   0   0
————————————————————
          1   1   1   0     0   0   1   1

1)左移一位,移出1,与多项式0x31异或

           1   1   0   0     0   1   1   0
XOR       0   0   1   1     0   0   0   1
————————————————————
            1   1   1   1     0   1   1   1

2)左移一位,移出1,与多项式0x31异或

           1   1   1   0     1   1   1   0
XOR       0   0   1   1     0   0   0   1
————————————————————
            1   1   0   1     1   1   1   1

3)左移一位,移出1,与多项式0x31异或

           1   0   1   1     1   1   1   0
XOR       0   0   1   1     0   0   0   1
————————————————————
            1   0   0   0     1   1   1   1

4)左移一位,移出1,与多项式0x31异或

           0   0   0   1     1   1   1   0
XOR       0   0   1   1     0   0   0   1
————————————————————
            0   0   1   0     1   1   1   1

5)左移一位,移出0,CRC值变成

            0   1   0   1     1   1   1   0

6)左移一位,移出0,CRC值变成

            1   0   1   1    1   1   0   0

7)左移一位,移出1,与多项式0x31异或

           0   1   1   1     1   0   0   0
XOR       0   0   1   1     0   0   0   1
————————————————————
            0   1   0   0     1   0   0   1

8)左移一位,移出0,CRC值变成

            1   0   0   1     0   0   1   0

(3)可以看出CRC值最终变成了0x92.

三、参考

模2除法(CRC)循环冗余校验码在线计算器
CRC校验——以SHT30温湿度传感器为例(内附SHT30的驱动代码)

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...