【STM32学习笔记】DS18B20温度传感器工作时序和编程指南

本文详细讲解了DS18B20温度传感器的存储器结构,1Wire Bus单总线的初始化、写读时序,以及在STM32上的应用流程,包括读取ROM序列和温度转换。提供了基于STM32F103ZET6的工程代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

一、DS18B20的存储器

1、64位的光刻ROM(不可更改)

2、Scratchpad RAM(高速暂存),容量72位(9个字节)

3、非易失、可电擦除的EEPROM

二、1Wire Bus单总线的3个基本时序

1、初始化InitializationProcedure

2、写时序Write Timing Diagram

3、读时序Read Timing Diagram

三、DS18B20的典型工作流程

1、读取ROM序列

2、进行1次温度转换

前言

本章先介绍了DS18B20的存储器结构和控制命令,又介绍了单总线协议的时序和代码实现,最后介绍了DS18B20典型的应用,温度读取和ROM读取,并给出了实现代码。

首先来看实验结果,注意ROM值打印的是10进制

基于STM32F103ZET6的完整工程代码,请到资源页下载:https://download.youkuaiyun.com/download/yy199806/88359806

一、DS18B20的存储器

1、64位的光刻ROM(不可更改

具体包括8位产品类型标号(0x28)+48位自身序列号+8位CRC(前56位的校验码)

可以将这64位序列理解为DS18B20的地址,当总线上挂接多个传感器时,通过5种ROM FUNCTION命令,可以用来寻址并选择出目标传感器,同时被选择的传感器可以被主机访问,具体的ROM命令如下表所示:

ReadRom [33h] 适用于只有1个DS18B20时,读取ROM序列
MatchRom [55h] 适用于多个传感器,主机发完命令紧接着发ROM序列,选择出对应的传感器,被选择的传感器的可以被主机读写、控制。

SkipRom

[CCh]

适用于单个传感器,作用和MatchRom相同,区别是不需要再寻址(写ROM地址).

SearchRom

[F0h]

通过一个深度优先遍历二叉树算法,来获得总线上所有传感器的ROM序列;

AlarmSearch

[ECh]

只获得总线上产生报警的传感器的ROM序列。

2、Scratchpad RAM(高速暂存),容量72位(9个字节)

如上图所示,RAM是可以直接被主机读写的存储器,具体包括LSB、MSB、TH、TL、Config、CRC和3个保留字节,共9个字节。

(1)如下图所示,配置寄存器(Config)只有高3位有效,最高位是工作模式的选择(1测试、0工作),日常使用默认为0,无需更改;后两位R1R0是分辨率设置,出产默认为11,即12位精度(分辨率0.0625度,转换时间750ms)。还可以手动设置其他三种精度,如下表所示:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值