目录
2、Scratchpad RAM(高速暂存),容量72位(9个字节)
前言
本章先介绍了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)。还可以手动设置其他三种精度,如下表所示: