市场上DS18B20芯片的困惑。

[复制链接]
4384|22
手机看帖
扫描二维码
随时随地手机跟帖
玄德|  楼主 | 2017-3-9 09:18 | 显示全部楼层 |阅读模式


操作DS18B20测温芯片有两次CRC校验,
一次是在读取芯片ID(即ROM值的时候,另一次是读取温度值。
如果严格操作,两次CRC校验都应当执行;如果不严格,不做CRC也行吧。

我起初的程序是按严格操作,两次CRC都执行,用定时器延时,示波器配合调试,程序应当没问题。

但小批量的时候遇到问题了,问题都出在CRC校验上,校验值错误。
有的在读ID环节能通过CRC校验,温度却不行,不论温度值是多少,读到的校验值字节始终是一个值(记得是0xAB),
有的两次CRC都错误。

先后从淘宝买过三批芯片,都是比较可信的商家;从本地商家手里买过一批,也是长期合作、比较可信的商家。
但芯片的表现却都不一样,来源相同,毛病也相同;同一批货,同样的问题。

这事已经持续了两、三年,至今没有解决。很困惑。
为了应急,暂时关闭了CRC校验。

欢迎各位说说自己的经验。







相关帖子

ningling_21| | 2017-3-9 10:47 | 显示全部楼层
从没用过CRC校验

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
玄德 + 6
lfc315| | 2017-3-9 11:13 | 显示全部楼层
传感器的引线有多长?

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
玄德 + 6
玄德|  楼主 | 2017-3-9 11:23 | 显示全部楼层
lfc315 发表于 2017-3-9 11:13
传感器的引线有多长?


很短,大约5公分。


使用特权

评论回复
lfc315| | 2017-3-9 11:28 | 显示全部楼层
除了IC本身/软件的问题,我只能考虑上拉电阻是不是合适,建议1.5k以下;
另外电源脚是否正常供电?

使用特权

评论回复
玄德|  楼主 | 2017-3-9 11:33 | 显示全部楼层
lfc315 发表于 2017-3-9 11:28
除了IC本身/软件的问题,我只能考虑上拉电阻是不是合适,建议1.5k以下;
另外电源脚是否正常供电? ...


供电是3.3v,和CPU一起,AMS1117-3.3,应当没问题。
只接一个18B20,一直用4.7K上拉,回头试试1.5K,但感觉不是这里问题。
软件也不大可能,同一批货,如果一个校验正常,一批都正常,否则都不正常。看我描述。

你加校验没有?情况怎么样,两步都正常?

使用特权

评论回复
ningling_21| | 2017-3-9 11:40 | 显示全部楼层
玄德 发表于 2017-3-9 11:33
供电是3.3v,和CPU一起,AMS1117-3.3,应当没问题。
只接一个18B20,一直用4.7K上拉,回头试试1.5K,但 ...

18B20的电源脚应该有滤波电容吧

使用特权

评论回复
wkshengren| | 2017-3-9 11:40 | 显示全部楼层
可能是有的货是仿片,建议从渠道查

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
玄德 + 6
玄德|  楼主 | 2017-3-9 11:45 | 显示全部楼层
ningling_21 发表于 2017-3-9 11:40
18B20的电源脚应该有滤波电容吧


板上滤波电容很多,12x12公分的板子,0.1u + 0.01u 有几十对,芯片附近也有。


使用特权

评论回复
玄德|  楼主 | 2017-3-9 11:46 | 显示全部楼层
本帖最后由 玄德 于 2017-3-9 11:47 编辑
wkshengren 发表于 2017-3-9 11:40
可能是有的货是仿片,建议从渠道查


印象里,早期的几个芯片都是正常的,
可惜时间早了,没记住货源,后期的就成现在这样。
已经试过四批了。


使用特权

评论回复
lfc315| | 2017-3-9 12:25 | 显示全部楼层
那就是芯片的问题吧?
要么保持现状,不用校验;
要么加校验,固定供应商。

使用特权

评论回复
王紫豪| | 2017-3-9 16:30 | 显示全部楼层
改改时序吧;找不能用的芯片debug一下,1-wird的时序要求严格,刚好代码在临界点,就会出现这样的问题,另外加强上拉是有好处的。

用逻辑分析仪一测,就能出来了,到底时序符不符合规范。

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
玄德 + 6 谢谢
chunyang| | 2017-3-9 16:34 | 显示全部楼层
如果具有批量一致性,可以肯定跟器件相关。18B20有大量山寨货,不过也不好说山寨货就一定有这个问题,不排除是时序临界。

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
玄德 + 6 谢谢
ac62| | 2017-3-9 17:22 | 显示全部楼层
学习了。。

使用特权

评论回复
3guoyangyang7| | 2017-3-9 17:56 | 显示全部楼层
表示没有用过啊         

使用特权

评论回复
pic学习能手| | 2017-3-9 19:58 | 显示全部楼层
为什么要crc,直接读温度不就行了吗?难道是多个?

使用特权

评论回复
forrest11| | 2017-3-9 20:43 | 显示全部楼层
本帖最后由 forrest11 于 2017-3-9 20:45 编辑

类似这样的问题,说批次问题的,说各种各样现象的,都没有说清楚一个问题:
此问题的真正原因是什么?
我们分析一下:现象:读CRC错。
那么接下去就要往下分析了,由于你有正确的批次,所以应该主要原因不是读取功能错。这样下一步工作就是拿示波器看波形的,主要是看时序timing,有没有timing问题一看就清楚。
尤其是单线制,不同批次的芯片,不能保证timing一样,所以一定要查余量是否足够。
如果timing也对了,那就看波形和正常的是否类似。总线上的杂波情况怎样 等等。
如果波形和正常的一样,(但CRC确实是报0xAB),那才去怀疑芯片本身问题。我觉得如果芯片有问题,一般也不会出AB这样的值,一般是00,FF,或者55,AA什么的,AB输出,我觉得芯片不太会这么作假。
当然,如果前面的工作都做到了,芯片假货也绝对可能。

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
玄德 + 6 谢谢,有启发。
szjlj168| | 2017-3-9 21:27 | 显示全部楼层
来看看

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
玄德 + 6 欢迎美女围观
Kelan| | 2017-3-9 21:54 | 显示全部楼层
怕假货,建议楼主去嘉立创商城买芯片。 不是我吹牛或托。

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
玄德 + 6 谢谢
yzqok| | 2017-3-10 09:10 | 显示全部楼层
这样的情况 楼上说得很有道理,先用示波器测试波形和读出的值是否一致,再考虑其他的问题...

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
玄德 + 6 谢谢
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:有事请找 xuander

150

主题

5845

帖子

43

粉丝