良许Linux教程网 干货合集 DS18B20驱动程序调试总结

DS18B20驱动程序调试总结

DS18B20是一款精度较高的温度传感器,最重要的是它通过一根导线既完成通讯,又为芯片提供电源。因此,在MCU引脚数量紧张的情况下,它是一个不错的选择。这个芯片看起来很简单,但是要让它工作并读取温度数据并不像想象的那么容易。正如群里的Ryan Wang同学所遇到的困扰一样。然而,令人难得的是,王同学最终成功解决了问题,并无私地分享了经验和代码。如果你认为这篇文章对其他同学有帮助,请帮忙转发或点个赞。

在CUBE中使能TIM2定时器,并将Clock Source设置为内部时钟,MCU的主频为32MHz,因此Prescaler的值为31(Prescaler = 32-1)。Counter Mode设置为UP,在这里要注意,官方手册要求Counter Period的最小值为1,但经过测试,将其设置为2时,定时器更加准确。

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

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

以上是针对DS18B20温度传感器的一些设置和代码要求,希望对大家有所帮助。

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

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. 数据的预处理

image-20231013215821233
image-20231013215821233

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

image-20231013215825661
image-20231013215825661
image-20231013215829449
image-20231013215829449
image-20231013215837481
image-20231013215837481

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

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部