ds18b20遇到的坑

在尝试驱动DS18B20传感器时遇到读取温度始终为0xff的问题。通过检查数据手册和修改代码中的延迟时间,发现在读取时序中,数据线拉低的延迟时间应大于2us,调整后解决了问题,成功读取到温度数据。
摘要由CSDN通过智能技术生成

最近在搞防水的ds18b20传感器驱动代码,本想着参考原子哥的代码移植一下,不料却遇到了一些棘手的问题,程序读出来的温度一直为0xff,温度读取错误;将传感器直接放在原子哥的stm32开发板子上也读出也是0xff;顿时有点怀疑传感器是不是坏了,然后又换了一个还是这样,所以就开始重新研究一下这个传感器了。

网上搜ds18b20的数据手册,如下为ds18b20的时序图,和时序时间参考表(时序参考表一直上传失败,就不贴了)

 

第一个时序为写1的时序为低电平持续tlow1(1~15us),高电平持续tslot-trec-tlow1(58~105us)

第二个时序为写0的时序为低电平持续tlow0(60~120us),高电平持续trec(>1us)

第三个时序为读0的时序为低电平持续trdv(<15us),高电平持续tslot-trdv(60~105us)

第四个时序为复位的时序trstl(>480us),trsth(>480us)

第五个时序为传感器检测的时序,在复位被拉高后,需要拉高tpdhigh(15~60us),再拉低tpdlow(60>240us)

接下来看程序源码,原子哥写1和写0的时序为

if (testb)
        {
            DS18B20_DQ_OUT=0;// Write 1
            delay_us(2);                            
            DS18B20_

  • 13
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值