搜索
bottom↓
回复: 10

DS18B20使用CRC校验但温度不对的问题请教

[复制链接]

出0入0汤圆

发表于 2014-8-15 09:08:31 | 显示全部楼层 |阅读模式
大家好,我最近使用STM32进行DS18B20的数据采集,首先因为DS18B20的时序严格我并没有使用ST自带的驱动库,我的是定时器中断方式一次性同时读取4个DS18B20的数据,比如用GPIOB,用GPIOB_12,GPIOB_13,GPIOB_14,GPIOB_15同时进行数据的读取,所有的操作比如DS18B20的复位操作,读数据写数据等都是同时操作的,操作方式如下
/***************************************************************************************
函  数:void DS18B20_M_Config_DQ_Out(void)
输入量:无      
返回值:无
备  注:当同时读取多个DS18B20时,该函数用于配置这些IO端口为输出模式
***************************************************************************************/
void DS18B20_M_Config_DQ_Out(void)
{
  uint32 tempdata;

  tempdata = _GPIOB_CRH;
  tempdata &= 0x0000FFFF;
  tempdata |= 0x33330000;
  _GPIOB_CRH = tempdata; //这里对多个GPIO端口同时赋值
}
在现场因为存在干扰情况,所以又加了CRC校验,整个程序使用的是多任务操作系统,在某个时刻存在在其他任务中存在关中断时间长的情况(注意这里可能会打断DS18B20的数据采集),但是我想在DS18B20加了CRC校验,即使偶尔出现一次因关中断时间长导致数据读取错误也没有关系,最后只要CRC不合格我就抛弃这次采集的数据,然后重新采集。
现在的问题是,这四个温度探头中有2个数据不对,比如实际温度只有38度,但采集回来是50多度,并且一直是50多度,因为加了CRC所以排除了是干扰问题,如果说是关中断时间过长造成,不可能我每次采集的时候都会碰到长时间关中断这种情况啊(因为是多任务,并且采集DS18B20的任务如果采集不对还会做相应的时间延迟,理论上可以避免每次都会被打断的情况)
综上所述,想问大家有没有可能DS18B20存在CRC校验正确,但温度不正确的情况

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2014-8-15 09:42:22 | 显示全部楼层
先写一个简单的不带系统的检测DS18B20的程序,看看是不是硬件问题

出0入0汤圆

 楼主| 发表于 2014-8-15 09:47:30 | 显示全部楼层
硬件应该没有问题,在公司测了好久,在现场也不是总出现,可能几天才出现一次,出现之后温度就恢复不回去了,所以感觉不是干扰造成的,但实际的现场温度也没有那么高,因为同时测量4个探头,所以可以从其他探头的状态上面判断出还有2个探头是正常的
如果说DS18B20温度不准(这里只温度偏差很大)且CRC能通过,那么CRC的作用是干什么的呢?

出0入0汤圆

 楼主| 发表于 2014-8-15 09:51:23 | 显示全部楼层
因为STM32是3.3V的,DS18B20是5V供电,所以加了一个电平转换端口
如图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-8-15 17:06:43 | 显示全部楼层
自己顶一个,望知道真相的大侠,指点迷津!!!

出0入0汤圆

 楼主| 发表于 2014-8-22 17:26:05 | 显示全部楼层
自己顶一个

出90入0汤圆

发表于 2017-2-13 10:44:43 | 显示全部楼层
本帖最后由 hzpyl 于 2017-2-13 10:50 编辑

我也出现这个问题了。

使用DS18B20,每秒测量一次,
CRC校验正确,但温度不正确,下一个又正常了。
几分钟出现一次,

DS18B20与单片机在一个线路板上,很近。
电源是几千元的稳压电源输出的3V电源。

操作DS18B20的程序已经关中断。

出0入0汤圆

 楼主| 发表于 2017-2-15 17:31:22 | 显示全部楼层
hzpyl 发表于 2017-2-13 10:44
我也出现这个问题了。

使用DS18B20,每秒测量一次,

有找到问题的原因没?

出90入0汤圆

发表于 2017-2-15 17:52:31 | 显示全部楼层
还没有。 你知道吗?

出0入0汤圆

 楼主| 发表于 2017-2-16 13:38:20 | 显示全部楼层
我的解决方法是在DS18B20电路里面增加了电源控制,因为我们的设备是做温控的,当发现实际温度比目标温度高出一定的范围,就控制对DS18B20进行断点

出0入0汤圆

 楼主| 发表于 2017-2-16 13:38:56 | 显示全部楼层
感觉是DS18B20自己被干扰死掉了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 12:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表