做18b20的温度采集,遇到一个问题,就是CRC校验。 我想请教一下老手,
1.这个如果只是1wire总钱上只有一个18b20的话那么这个是不是就可以不用CRC校验了?
2.这个CRC校验到底是什么,校验的是什么东西?是为了区分开总线上的器件么?
3.我看别人的程序校验的时候是查表的方式,他的那个表中的数值是怎么来的,为什么有256个,不是64位么,8个字节啊怎么会有那么多?
------解决方案--------------------
CRC 是循环冗余检错的缩写,是通讯检错的方法之一。
通俗地说,CRC 是一种多项式除法。所得的结果就是余数。校验时,将“余数”连接在“被除数”(消息)后面。如果“除尽”(也有些协议是得到固定的一个余数),就表明正确。
CRC 没有统一的标准,因此协议众多。主要的区别是多项式(“除数”)和结果的初始值以及计算时消息比特输入的顺序(所谓“正序”和“逆序”)。
查表法是采用软件实现的一种快速的方法。表的 256 个入口,表明计算的输入是字节,即有 256 种可能。8 字节就迭代计算 8 次。
------解决方案--------------------
http://zh.wikipedia.org/wiki/%E5%BE%AA%E7%8E%AF%E5%86%97%E4%BD%99%E6%A0%A1%E9%AA%8C
------解决方案--------------------
没错,是按照协议算法预先算好的。也有一些实现,是先调用一个表生成函数,计算输出表。
------解决方案--------------------
个人感觉常crc 检测在低速中应用意义不大