一. 基础知识DS18B201.单总线VCC DQ GND三个引脚所有的数据和指令的传递都是从最低有效位开始传输2.温度寄存器2字节温度报警阈值寄存器TH TL 1字节,ROM掉电不丢失配置寄存器1字节配置温度分辨率9/10/11/12位ROM掉电不丢失Q:什么是温度分辨率上电默认12位A:DS18B20 的温度分辨率是指它能检测到的最小温度变化量核心范围为9~12 位对应 0.5℃、0.25℃、0.125℃、0.0625℃3.如何测温芯片在上电状态下默认的精度为12位。 DS18B20启动后保持低功耗等待状态当需要执行温度测量和AD转换时总线控制器必须发出[44h]命令。在那之后产生的温度数据以两个字节的形式被存储到温度寄存器中 DS18B20继续保持等待状态。 DS18B20由外部电源供电时总线控制器在温度转换指令之后发起“读时序”见单总线系统节 DS18B20正在温度转换中返回0转换结束返回1。温度寄存器数据格式1. 高4位表示数据“正负”为0000-为11112. 后面8位表示数据以12位分辨率为例比如(1)125°C :125➗0.062520002000十进制转化成 0111_1101_0000二进制因此 125°C在12位分辨率下就是0000_0111_1101_0000(2)-55°C55➗0.0625880880十进制0011_0111_0000二进制1100_1000_1111(反码)1100_1001_0000(补码反码1)因此在最终12位分辨率下-55就是1111_1100_1001_0000注意4.报警操作TH和TL寄存器共8bitDS18B20完成一次温度转换后就用该温度值与存储在TH和TL寄存器如图3所示中的一个字节的用户自定义的报警阈值进行比较。标志位S指示温度值的正负正数S0负数S1。 TH和TL寄存器是非易失性的EEPROM 所以在掉电后数据仍然保持。当TH和TL为8位寄存器时在与TH和TL的比较中仅适用温度寄存器的4到11位。如果测得的温度高于TH或低于TL报警条件成立 DS18B20内部就会置位一个报警标识。每进行一次测温就对这个标识进行一个更新。因此如果报警状态消失则在下一个温度转换后该标识将被关闭。5. 64位只读存储器每个DS18B20唯一的64位编码每颗DS18B20都有一个全球唯一的存储在ROM中的64位编码。最前面8位是单线系列编码 28h。接着的48位是一个唯一的序列号。最后8位是以上56位的CRC编码。6. 存储器7. 配置寄存器配置精度用户可以通过表2所示设置R0和R1位来设定DS18B20的精度。上电默认设置 R01 R1112位精度。注意精度和转换时间之间有直接的关系。配置寄存器的位7和位0到4被器件保留禁止写入在读数据时它们全部表现为逻辑1。8.CRC发生器可以关掉吗单总线信号类型复位脉冲拉低、存在脉冲拉低、写0、写1、读0和读1它的时序是怎样的二. 对于我们是主机FPGA来说DS18B20如何使用首先明确总线空闲时被上拉电阻拉高1.初始化发送复位脉冲接收存在脉冲表明DS18B20已经准备好发送和接受时序控制器发送复位脉冲480us—上拉进入高电平 — 等待15-60us— DS18B20发送存在脉冲60-240us2.发送ROM命令用于确定与主设备通信的是哪颗DS18B20设备初学者只接入一颗DS18B20可以直接发送“忽略ROM指令”SKIP ROM [CCh])3.发送DS18B20功能指令用于控制读写DS18B20的寄存器4.发送写的数据/接收读的数据1写时序必须把数据线拉到低电平然后释放且需在15us内释放总线。当总线被释放后上拉电阻将总线拉高。此时数据线从逻辑高电平拉到低电平时写时序开始。写时序必须最少持续60us包括两个写周期之间至少1us的恢复时间。2读时序在之后的文章我会具体写出使用EGO1读取温度的基本时序逻辑以及驱动代码~~