0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

DS18B20驱动程序调试总结

TopSemic嵌入式 来源:TopSemic嵌入式 作者:TopSemic嵌入式 2022-04-03 09:06 次阅读

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勾选配置)

voiddelay_us(uint16_tus)
{
/*中断会打断微秒延时函数,
*但计数器计数不会停
*防止计数器增加到65535之后重新开始计数
*/
uint16_tdiffer=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.数据的预处理

ee6209e8-b18b-11ec-aa7f-dac502259ad0.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模式下,如未人为拉高或拉低,则管脚电平会自动拉高)。

ee826b48-b18b-11ec-aa7f-dac502259ad0.png

eea28ffe-b18b-11ec-aa7f-dac502259ad0.png

eeb6b9a2-b18b-11ec-aa7f-dac502259ad0.png

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

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    453

    文章

    50406

    浏览量

    421822
  • 温度传感器
    +关注

    关注

    48

    文章

    2913

    浏览量

    155889
  • 定时器
    +关注

    关注

    23

    文章

    3237

    浏览量

    114467

原文标题:DS18B20驱动程序调试总结

文章出处:【微信号:TopSemic,微信公众号:TopSemic嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    DS18B20温度传感器的工作原理和硬件设计

    通过本文可以了解DS18B20温度传感器工作原理、硬件设计、DS18B20单总线接口驱动编写。
    的头像 发表于 10-24 14:38 762次阅读
    <b class='flag-5'>DS18B20</b>温度传感器的工作原理和硬件设计

    ds18b20传感器的使用方法

    DS18B20是一种广泛使用的数字温度传感器,它基于1-Wire(单总线)通信协议。这种传感器因其高精度、易用性和低成本而受到欢迎。 DS18B20传感器简介 DS18B20是由Maxim
    的头像 发表于 10-18 14:52 440次阅读

    ds18b20温度传感器怎么接线

    DS18B20是一种广泛使用的数字温度传感器,它基于1-Wire(一线)通信协议工作。这种传感器因其高精度、易用性和低成本而受到欢迎。 DS18B20传感器引脚介绍 DS18B20有三个主要的引脚
    的头像 发表于 10-18 14:50 736次阅读

    ds18b20温度传感器如何使用

    DS18B20是一款广泛使用的数字温度传感器,它具有高精度、低功耗和易于使用的特点。 DS18B20温度传感器简介 DS18B20是由Maxim Integrated(现为Analog
    的头像 发表于 09-03 16:51 533次阅读

    ds18b20温度传感器是什么类型

    DS18B20温度传感器是一种数字温度传感器,它属于单总线(One-Wire)数字温度传感器类型。这意味着它仅需要一根数据线(加上电源线和地线,共三根线)就能与微处理器或其他数字电路进行通信。这种
    的头像 发表于 09-03 16:46 788次阅读

    ds18b20温度传感器和dht11的区别

    DS18B20和DHT11都是常用的温度和湿度传感器,它们在许多项目和应用中都有广泛的应用。 1. 工作原理 DS18B20 DS18B20是一种数字温度传感器,它使用1-Wire通信协议与微控制器
    的头像 发表于 09-03 16:44 1166次阅读

    MY18E20、MY1820 与 DS18B20 性能对比表

    MY18E20、MY1820 与 DS18B20 最高测温精度一样,都是±0.5℃,M1820Z 最高测温精度±0.1℃。芯片感温原理基于 CMOS 半导体 PN节温度与带隙电压的特性关系,经过
    的头像 发表于 07-29 18:22 730次阅读
    MY<b class='flag-5'>18E20</b>、MY1820 与 <b class='flag-5'>DS18B20</b> 性能对比表

    STC32和STC8H驱动DS18B20测温串口发送数据

    STC32G12K128 和 STC8H8K64U 驱动 DS18B20 模块,采集环境温度并通过串口发送数据至电脑
    的头像 发表于 06-27 16:27 736次阅读
    STC32和STC8H<b class='flag-5'>驱动</b><b class='flag-5'>DS18B20</b>测温串口发送数据

    基于51单片机DS18B20温度采集1602液晶显示报警设计

    本资源内容概要:       这是基于51单片机DS18B20温度采集1602液晶显示报警设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)、元件
    发表于 06-25 10:16 0次下载

    基于51单片机DS18B20水箱水温检测控制设计

    本资源内容概要:       这是基于51单片机DS18B20水箱水温检测控制设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)、元件清单
    发表于 06-25 10:04 0次下载

    基于51单片机采集DS18B20多点温度电路图及程序元件清单

    本资源内容概要:       这是基于51单片机采集DS18B20多点温度电路图及程序设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)、元件清单
    发表于 06-24 17:30 0次下载

    DS18B20温度传感器工作原理

    DS18B20以其独特的工作原理、卓越的技术参数和广泛的应用场景,成为了市场的明星产品。 深入了解DS18B20的工作原理 DS18B20温度传感器的工作原理基于热敏电阻的特性和数字信号转换。其核心部件是一个热敏电阻,它的电阻
    的头像 发表于 06-19 16:01 1057次阅读

    基于51单片机DS18B20温度检测上下限报警proteus仿真

    本资源内容概要:       这是基于51单片机DS18B20温度检测上下限报警proteus仿真及电路图程序元件清单设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码
    发表于 06-18 10:13 1次下载

    基于STC8H8K64U和DS18B20的温度采集和LabVIEW上位机显示

    之前通过 STC 单片机和 DS18B20 实现了环境温度采集并串口显示,后面进一步想要实现温度的实时监测和数据记录保存,因此编写了 LabVIEW 程序,修改了部分单片机程序代码。经过实验验证
    发表于 04-08 12:28

    DS18B20温度传感器的优缺点

    可编程寄存器:DS18B20内部具有可编程寄存器,允许用户对其进行配置和控制,以满足不同的应用需求。
    发表于 04-04 11:39 4157次阅读