TopSemic · 2022年03月29日

DS18B20驱动程序调试总结

DS18B20是一款精度比较好的温度传感器,最重要的是它通过一根导线,既完成通讯,又给芯片供电,在MCU引脚数量比较紧张的时候,确实是个不错的选择。这颗芯片看起来简单,但真正让它跑起来,从里面读出温度数据可没有想象的那么容易。这不,群里的Ryan Wang同学就被折磨得不行。难能可贵的是,在王同学终于搞定它之后,无私地分享出心得和代码。如果你觉得这篇文章能帮到更多的同学,就帮忙转发,或点个在看吧。

通过CUBE使能TIM2定时器,Clock Source使用internal Clock,MCU主频为32Mhz,故Prescaler=32-1=31,Counter Mode为UP,这里注意Counter Period 官方手册要求最低为1,经测试设置为2时,定时器更为准确。

完成以上配置后,需要在程序手动调整和增加功能代码:

1.   Cube配置TIM2定时器的基础上,在程序编写delay\_us(uint16\_t us)函数,delay\_us的精确度将直接影响DS18B20温度数据的读取结果。本程序使用了HAL库(CUBE勾选配置)

void delay_us(uint16_t us)  
{  
 /* 中断会打断微秒延时函数,  
  * 但计数器计数不会停  
  * 防止计数器增加到65535之后重新开始计数  
  */  
    uint16_t differ=50000-us;  
   
    HAL_TIM_Base_Start(&htim2);  
    __HAL_TIM_SET_COUNTER(&htim2,differ);  
  
    while(differ<50000)  
    {  
        differ=__HAL_TIM_GET_COUNTER(&htim2);  
    }  
  
    HAL_TIM_Base_Stop(&htim2);  
}  

2.  注意程序工程中DS18B20.H的定义,及DS18B20.C文件,(同文件夹下附件)其内部函数定义根据DS18B20官方手册进行操作,DS18B20为one wire 通讯,对时序的要求相对严格,DS18B20的数据通讯通过DS18B20的data管脚进行单片机通讯,主要流程为:

  1. DS18B20初始化
  2. DS18B20接入自检
  3. DS18B20写0xcc(SKIP ROM)
  4. 写0x44(通知传感器进行温度数据采集与转换)
  5. DS18B2再次初始化
  6. DS18B20再次接入自检
  7. DS18B20写0xcc(SKIP ROM)(倒序即0011 0011,如下图左)
  8. DS18B20写0xbe(通知传感器进行数传)(倒序0111 1101,下图右)
  9. DS18B20读一个字节
  10. DS18B20再读一个字节
  11. 数据的预处理

8d3f872976ddccca98f90ea2b1b6b2d2.png

3.  以上每步操作都需要微秒级延时等待,参考DS18B20官方手册关于“DS18B20初始化与check”,“写0”,“写1”,“读0”,“读1”的具体时序要求,注意针对不同MCU的主频配置,在保证1微秒延时准确的前提下,具体的微秒延时将有所调整;特别注意在读时序时的延时,针对32MHZ的本机,在DS18B20.C中已做延时调整(参考正点原子DS18B20试验(72MHZ),使用示波器抓取各个阶段波形,结合DS18B20手册,对比调试,)若时序不对,则读数一直为0或者85。着重理解DS18B20\_data管脚的输入和输出模式,拉高和拉低(如DS18B20标准电路要求在data管脚接上拉电阻,那么在管脚IN和OUT模式下,如未人为拉高或拉低,则管脚电平会自动拉高)。

38b12fef29aa2e08dd9a121f4e5ec833.png
b188d33e49c8581b941a78cdbca1353b.png

3c689d1fbdaf2a3c5313aadc27f73e05.png

4. 传感器选用DS18B20,因外部封装种类繁多,在此不放链接。

相关代码见链接:https://cowtransfer.com/s/eb5... 

END

作者: wuyage
来源: https://mp.weixin.qq.com/s/KbiKGNUFVweJmp6q9Kq3fQ
aijishu_TopSemic_1.jpg

推荐阅读

更多芯片嵌入式电子技术分享请关注Topsemic嵌入式极术专栏
推荐阅读
关注数
3258
内容数
45
让芯片使用更简单。 专注分享:嵌入式,单片机,STM32,ARM,RTOS,Linux, 软硬件,半导体,电子技术等相关内容。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息