DS18B20 的CRC 算法详解

来源:本站
导读:目前正在解读《DS18B20 的CRC 算法详解》的相关信息,《DS18B20 的CRC 算法详解》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《DS18B20 的CRC 算法详解》的详细说明。
简介:本文主要介绍的是DS18B20温度传感器中CRC的计算方法。

DS18B20数字温度器件就是采用CRC8的校验方式,下面是CVAVR集成的CRC8校验函数

#include <mega48.h>

#include <1wire.h>

unsigned char a[]={0x28,0x6D,0x00,0x85,0x00,0x00,0x00,0xCF};

unsigned char crc8;

main()

{

while(1)

{

crc8=w1_dow_crc8(a,7); //求数组a的前7个数的CRC8校验码

}

}

上面的例子中,数组a的8个数据就是我的DS18B20的ID码,0x28是器件的家族码,0x6D,0x00,0x85,0x00,0x00,0x00这6个数就是ID码,0xCF是前面7个数的校验码

用AVR Studio调试上面的程序就可以看到,crc8的结果就是0xCF了

也可以自己写函数,功能与上面的一样

unsigned char crc8(unsigned char *ptr, unsigned char len)

{

unsigned char i;

unsigned char crc=0;

while(len--!=0)

{

for(i=1; i!=0; i*=2)

{

if((crc&1)!=0) {crc/=2; crc^=0x8C;}

else crc/=2;

if((*ptr&i)!=0) crc^=0x8C;

}

ptr++;

}

return(crc);

}

提醒:《DS18B20 的CRC 算法详解》最后刷新时间 2024-03-14 01:08:28,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《DS18B20 的CRC 算法详解》该内容的真实性请自行鉴别。