1-Wire温度传感器的快速编程

2011-05-03 16:38:02来源: 互联网
引  言

一般来说,总线数越少,连接就越简单,因而串行总线嵌入式元件在许多应用场合颇受欢迎。但正因为只有1根线,该类元件的编程要紧扣硬件和时钟,难度大于I2C总线和SPI总线。本文以数字温度传感器DSl8B20为例,介绍一种实用和简单的编程方案。

1  DS18B20的精简编程考虑

测温分辨率:通过设置配置寄存器,DS18B20有0.5℃、0.25℃、0.125℃和0.062 5℃几种温度可供选择。如果不作选择,缺省值为12位,即最高分辨率0.062 5℃,这样可省去相关写EEPROM的命令。图1为温度格式。



温度报警高限TH和低限TL:如果设置了TH和TL,DS18B20将在温度高于TH或低于TL时做出响应。这要用到写入EEPROM的命令,将可改写RAM(Scratchpad RAM)拷入EEPROM。其实,在很多应用场合,这样的报警设置完全可以在MASTER(如单片机)中完成,从而节省DS18B20的编程。这只要不使用报警搜索命令(Alarm search command)即可。

光刻ROM(lasered ROM)命令:一共有6个。对于只要单个DS18B20的场合,如果不考虑读ROM中的序列号代码,不允许报警等功能,只要进行测温的话,用一个跳过ROM(Skip ROM)命令就足够了。

RAM有关的命令:一共有6个。如果在DS18B20的电源端专配电源,不设置高低温报警,只需使用“ConvertT”和“Read Scratch”命令即可。前者开始进行温度转换(时间约需750 ms),后者将温度值及循环冗余校验码CRC等9字节读入MASTER(如单片机)。

关键时序:尽管测量时可以作上述简化,但DS18B20的时序必须严格遵循。最苛刻的时间要求应是读时槽(read time slots):MASTER在数据线上发出一个下降沿表示读时槽开始,时间至少保持1μs,然后停止驱动数据总线。DS18B20在数据线上输出约15 μs的数据。在这一时间段内,MASTER必须及时采样数据线。这样的定时要求与之相连的单片机必须工作在较高的频率,如主频为32 kHz就无法满足15μs内完成采样的要求。

2  一个简单实用的程序设计方案

采用上述精简方案后,基于单片机PIC16F628A(主频为4 MHz)实现的测温程序如下:



到此开始读9个字节scratchpad,并检查CRC。如无误,再次调用rp子程序复位DS18B20,结束本次测量;如出错,转出错处理子程序。为使系统具有一定的容错能力,出错时也可将上述程序再试一遍,如连续3次都出现CRC检查错则转出错处理子程序。

以上方案已长期(数月)用于气象温度测量,正常可靠。

关键字:快速  编程

编辑:eeleader 引用地址:http://www.eeworld.com.cn/gykz/2011/0503/article_5779.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
快速
编程

小广播

独家专题更多

TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved