首页 > 代码库 > DS18B20的操作
DS18B20的操作
DS18B20
1 Feature
1. 一总线接口,只有一个端口用来通信;
2. 可多个传感器支路并联使用简化了分布式温度传感应用;
3. 不需要再外接其他器件;
4. 可以从数据线驱动,电源供应范围为3.0V到5.5V,也可从专用管脚接电;
5. 零备用电源要求;
6. 测温范围为-55度到125度,在-10到+85度之间测量时误差为0.5度;
7. 可编程分辨率9到12位,12位时转换时间最大转换时间为750ms;
8. 可由用户定义非易失性的报警温度
9. 报警搜索命令自动辨别和寻址温度超出程序设定温度的设备;
10. 可用于恒温控制,工业系统,消费类产品,温度计或任何热敏系统;
2 概述
如图展示了DS18B20的四大主要组成部分:
1.64位光刻ROM
2.温度传感器,
3.非易失性温度报警触发器,包括高温触发和低温触发;
4.一个配置寄存器。
内部结构
一 DS18B20单总线事项
一总线系统只一种有一个bus master和一或多个slaves;DS就是这样的一个slave;关于这种一总线系统的讨论使用通常有三点:
1硬件配置;
2操作顺序;
3一总线信号(包括信号的类型和时序)
1.硬件配置:
一线总线只定义一个单独的信号线,基于此,总线上的每个设备在恰当的时候可以驱动总线这项能力就显的犹为重要。To facilitate this(为了做到这样), 每个链接到单总线上的设备都应当有漏极开路或三态输出;DS18B20的DQ引脚就是漏极开路,如下图为其内部端口电路的造价模型;多站总线通常由一总线和多个slave组成。单总线要求大约5K欧的上拉电阻:
2 操作processing顺序;
The protocol for accessing the DS18B20 via the 1-Wire port is as follows:
通过单总线端口访问DS18B20的协议如下:
Initialization【初始化】
ROM Function Command【ROM函数命令】
Memory Function Command【内存函数命令】
Transaction/Data【数据传输命令】
1.1初始化
单总线上的所有处理操作应该首先以一个初始化序列为开始;The initialization sequence consists of a reset pulse transmitted by the bus master followed by presence pulse(s) transmitted by the slave(s).初始化序列由一个由master发送的复位脉冲组成, 随后slaves会传递一个存在脉冲;
存在脉冲的目的是让总线master知道DS18B20在bus上而且已经初始化成功做好开始操作的准备;更详细的部分看section“1-wire signaling”
时序图:
初始化程序:
bit Init_DS18B20(void)
{
bit dat=0;
DQ = 1; //最最初始,DQ置1
DelayUs2x(5); //稍做延时
DQ = 0; //单片机将DQ拉低,一人reset 脉冲完成;
DelayUs2x(200); //根据时序DQ低平需要延时 大于 480us 小于960us
DelayUs2x(200);
DQ = 1; //时间到,拉高总线
DelayUs2x(50); //等待15~60us ,接收DS18B20发的持续60-240us的存在脉冲(0)
dat=DQ; //接收操作;dat通知总程序初始化结果, dat=0成功, dat=1失败
DelayUs2x(25); //稍作延时返回
return dat;
}
1.2 ROM Function Command【ROM函数命令】
一旦总线master检测到一个存在信号,即可以发出以下五种ROM命令中的一种。所有的ROM函数命令都是8全长度。命令如下:
Read ROM [33h]:这个命令允许总线master读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC校验码。这条命令只有在单线上才可有效使用。如果使用这个命令的时候,有多个slave在bus上,当这些slave同时传输数据时会发生数据冲突。(结果会是线与结果)。
Match ROM [55h]: 匹配rom命令,再加上一个64位的ROM序列,允许总线master在多支线的总线上寻址特定的DS18B20。只有正确匹配到发送的64位序列号的DS18B20才会对随后的内存操作指令进行响应。那些没匹配64位ROM序列的slaves将等待一下个复位脉冲。这个命令在单线多路和单路时均可使用。
Skip ROM [CCh]:跳过ROM操作;在单点总线系统中,这个命令允许总线master不发送64位的ROM序列而直接进行memory操作命令。如果是在多点总线系统使用了这个命令,那么如果随后又发送Read command,总线上就会出现数据冲突。(结果会是线与结果)
Search ROM [F0h]:系统在初始工作时,总线mastr可能并不知道单线总线上有几个设备或者这些设备的64位ROM codes.那么search ROM命令即允许总线master使用一种消去处理来识别bus上的所有设备。
Alarm Search [ECh]:此命令的流程与搜索ROM命令相同。但是,仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令作出响应。报警的条件是高于TH或低于TL。只要DS18B20一上电,报警条件就保持在设置状态ountil another temperature measurement reveals a non-alarming value。报警的的触发值存储在E2PROM中。如果报警条件存在而且TH或TL被改变,一个温度转换就会开始,目的是验证温传感是否报警。
1.3 MEMORY COMMAND FUNCTIONS[内存操作指令]
1.3.1 Write Scratchpad [4Eh]
这个命令写向DS18B20的高速缓存区,接下来应为3个字节的数据被写进从TH register到TL register 到 配置寄存器,这些数据得在下一次复位信号前写进来。
1.3.2 READ Scratchpad[BEH]
这个命令会读高速缓存区的内容。从第0字节开始到byte8共九字节。如果不是所有的方位都需要被读,总线master可以随时编写 一个复位信号来终止读出。
1.3.3 Copy Scratchpad[48h]
这个命令会复制DS18B20的Scratchpad到时E2 memory ,存储到非易失性的温度触发器字节。
1.3.4 CONVERT【44h】
DS18B20的操作