DS18B20介绍
DS18B20数字温度传感器是DALLAS公司生产的单总线器件,用它来组成一个测温系统具有线路简单,体积小,在一根通信线上可以挂很多这样的数字温度传感器,十分方便。
特点
- 通信采用1-Wire接口
- n每个DS18B20都有唯一的64位序列码储存在板载ROM中
- 无需外部元件
- 可从数据线供电,电源范围为3.0V ~ 5.5V。
- 可测量的温度范围在-55℃ ~ +125℃
- 在-10~+85℃范围内精确度为±0.5℃
- 温度计分辨率可设置为9~12位,12位时分辨率对应为0.0625℃
单总线
DS18B20采用1-wire Bus
传输数据,所有数据都在一条线上传输,因此单总线协议对时序要求非常严格以确保数据的完整性。
单总线信号类型: 复位脉冲、存在脉冲、写0、写1、读0、读1。
所有这些信号除存在脉冲由DS18B20发出的以外,其他信号都由总线控制器发出。并且,数据传输总是从最低有效位开始。
初始化时序
初始化时序里面包含了复位DS18B20和接收DS18B20返回的存在信号。
主机和DS18B20做任何通讯前都需要对其初始化。
初始化期间:
-
总线控制器拉低总线并保持480us以上,挂在总线上的器件将被复位
-
释放总线,等到15-60us,此时18B20将返回一个60~240us之间的低电平存在信号
写时序
写时序有2种写法:写0时序和写1时序。总线控制器通过写 1 时序写逻辑 1 到 DS18B20,写 0 时序写逻辑 0 到 DS18B20。
所有写时序必须持续 >=60us,包括:两个写周期之间至少 1us 的恢复时间。当总线控制器把数据线从逻辑高电平拉到低电平的时候,写时序开始。
初始化写时序:
总线控制器要生产一个写时序,必须把数据线拉到低电平然后释放,在写时序开始后的 15us 释放总线。
当总线被释放的时候,5K 的上拉电阻将拉高总线。因此,如果总控制器要生成一个写 0 时序,必须把数据线拉到低电平并持续保持(至少 60us)。
进行写时序:
总线控制器初始化写时序后,DS18B20 在一个 15us 到 60us 的窗口内对 I/O 线采 样。如果线上是高电平,就是写1。如果线上是低电平,就是写0
读时序
- 先把总线拉低至少1us
- 在15us内选取1us进行读数据
- 在拉低的15us(包括上面2点所说的1us)内传输的数据是有效的
- 然后总线被释放
- 总时间必须>=60us
读1的详细时序:
TINIT,TRC 和 TSAMPLE 之和必须小于 15us
推荐的读1时序:
系统时间可以用下面办法达到最大:
TINIT 和 TRC 保持时间尽可能小;把控制器采样时间放 到 15us 周期的最后。
例子
1 |
|