2.2 一线协议之ds18b20
2.2.1 简介
DS18B20是由 Dallas半导体公司推出的一种的 “一线总线(1-Wire)” 接口的温度传感器,它工作在3-5.5V的电压范围,其测量温度范围为-55~+125℃,精度为+0.5℃。DS18B20采用多种封装形式,从而使系统设计灵活、方便。与传统的热敏电阻等测温元件相比,它是一种新型的体积小、适用电压宽、接口简单的数字化温度传感器。
每个DS18B20芯片在出厂时,都固化烧录了一个唯一的64位产品序列号在其ROM中,它可以看作是该DS18B20的地址序列码。
64位ROM 的排列是:前8位是产品家族码,接着48位是DS18B20的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+XS+X4+1)。
ROM作用是使每一个 DS18B20 都各不相同,这样就可实现一根总线上挂接多个DS18B20。
一线总线结构具有简洁且经济的特点,可使用户轻松地组建传感器网络,从而为测量系统的构建引入全新概念。现场温度直接以 “一线总线” 的数字方式传输,大大提高了系统的抗干扰性。它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
2.2.2 工作原理
所有的单总线器件要求采用严格的信号时序,以保证数据的完整性。
DS18B20共有6种信号类型:复位脉冲、应答脉冲、写0/1、读0/1。
所有这些信号,除了应答脉冲以外,都由主机发出同步信号,并且发送所有的命令和数据都是字节的低位在前(LSB)。
2.2.3 通信时序
复位脉冲和应答脉冲
单总线上的所有通信都是以初始化序列开始。主机输出低电平,保持低电平时间至少480us,以产生复位脉冲。接着主机释放总线,4.7K 的上拉电阻将单总线拉高,延时15~60 us,并进入接收模式(Rx)。
接着DS18B20拉低总线60~240 us,以产生低电平应答脉冲,若为低电平,再延时480us。
写时序
写时序包括写0时序和写1时序。所有写时序至少需要60us,且在2次独立的写时序之间至少需要1us 的恢复时间,两种写时序均起始于主机拉低总线:
写0时序:主机输出低电平,延时60us,然后释放总线,延时2us;
写1时序:主机输出低电平,延时2us,然后释放总线,延时60us;
读时序
单总线器件仅在主机发出读时序时,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时序至少需要60us,且在2次独立的读时序之间至少需要1us 的恢复时间。
当总线控制器把数据线从高电平拉到低电平时,读时序开始,数据线必须至少保持1us,然后总线被释放。DS18B20通过拉高或拉低总线上来传输 “1” 或 “0” 。当传输逻辑 “0” 结束后,总线将被释放,通过上拉电阻回到上升沿状态,从DS18B20输出的数据在读时序的下降沿出现后15us内有效。因此,总线控制器在读时序开始后必须停止把l/O口驱动为低电平,15us以内读取 I/O 口状态。