操作DS18B20测温芯片有两次CRC校验,
一次是在读取芯片ID(即ROM值)的时候,另一次是读取温度值。
如果严格操作,两次CRC校验都应当执行;如果不严格,不做CRC也行吧。
我起初的程序是按严格操作,两次CRC都执行,用定时器延时,示波器配合调试,程序应当没问题。
但小批量的时候遇到问题了,问题都出在CRC校验上,校验值错误。
有的在读ID环节能通过CRC校验,温度却不行,不论温度值是多少,读到的校验值字节始终是一个值(记得是0xAB),
有的两次CRC都错误。
先后从淘宝买过三批芯片,都是比较可信的商家;从本地商家手里买过一批,也是长期合作、比较可信的商家。
但芯片的表现却都不一样,来源相同,毛病也相同;同一批货,同样的问题。
这事已经持续了两、三年,至今没有解决。很困惑。
为了应急,暂时关闭了CRC校验。
欢迎各位说说自己的经验。
|