★6.9.3 1-Wire单总线扩展
单总线(也称1-Wire bus)是由美国DALLAS公司推出的外围串行扩展总线。采用单根信号线完成数据的双向传输。只有一条数据输入/输出线DQ,总线上的所有器件都挂在DQ上,电源也可以通过这条信号线供给,使用一条信号线的串行扩展技术,称为单总线技术。单总线只有一根数据线,系统中的数据交换、控制都由这根线完成。设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其他设备使用总线。单总线通常要求外接一个约为4.7kΩ的上拉电阻,这样,当总线闲置时,其状态为高电平。主机和从机之间的通信可通过三个步骤完成,分别为初始化1-Wire器件、识别1-Wire器件和交换数据。1-Wire器件都必须严格遵循单总线命令序列,即初始化、ROM、功能命令。如果出现序列混乱,1-Wire器件将不响应主机。
1-Wire使用自身的网络接口的传感器和其他器件,该接口的数据通信和供电仅需通过一根数据线再加一根地线,这意味着微控制器仅需一个端口即可与1-Wire传感器通信。1-Wire网络工作于一主多从模式(多点网络)。时序非常灵活,允许从机以高达16kbit/s的速率与主机通信。每一个符合1-Wire协议的器件都有一个全球唯一的64位地址(8位的家族代码、48位的序列号和8位的CRC代码),主芯片对各个从芯片的寻址依据这64位的内容来进行,片内还包含收发控制和电源存储电路,允许1-Wire主机精确选择位于网络任何位置的一个从机进行通信。单片机作为主芯片,设置单片机端口一条线作为单总线,具有单总线特性的DS18B20作为从芯片。1-Wire总线采用漏极开路模式工作,主机(或需要输出数据的从机)将数据线拉低到地表示数据0,将数据线释放为高表示数据1。这通常通过在数据线和VCC之间连一个分立电阻实现。
1 DS18B20性能特点
DS18B20是DALLAS公司生产的具有1-Wire协议的数字式温度传感器芯片。传感器的供电寄生在通信的总线上,可以从总线通信的高电平中取得,因此可以不需要外部的供电电源,也可以直接用供电端(VDD)供电。温度高于100℃时,不推荐使用寄生电源,供电范围为3.0~5.5V,当DS18B20处于寄生电源模式时,VDD引脚必须接地,且总线空闲时需保持高电平以便对传感器充电。
可以用独有的64位芯片序列号(ID)辨认总线上的器件并记录总线上的器件地址。可将多个温度传感器挂接在该单一总线上,实现多点温度的检测。每只DS18B20都有一个唯一存储在ROM中的64位编码。最低8位是单线系列编码28H,接着的48位是一个唯一的序列号,最高8位是以上56位的CRC编码(CRC=X8+X5+X4+1)。
测温范围为-55~+125℃。温度传感器的精度分9位、10位、11位或12位,分别以0.5℃、0.25℃、0.125℃和0.0625℃增量递增。转换时间:9位精度时为93.75ms,10位精度时为187.5ms,12位精度时为750ms。
2 DS18B20温度传感器的寄存器
DS18B20温度传感器的内部寄存器有9个字节,寄存器组成分配见表6-18所示。该寄存器包含了带有非易失性的可电擦除的E2PROM特性的静态随机寄存器SRAM、用来存放高温低温报警的触发寄存器(TH和TL)和配置寄存器。
表6-18 DS18B20内部寄存器组成分配
①该值存放在E2PROM中。