九层妖塔 起于垒土
蓝桥杯模块DS18B20温度传感器Part_1
一、DS18B20
(一)、原理图
1、原理图
2、引脚说明
引脚 | Function | 说明 |
---|---|---|
VDD | Optional VDD. VDD must be grounded for operation in parasite power mode. | 可选VDD。 VDD必须接地才能在寄生电源模式下运行。 |
GND | Ground | 地 |
DQ | Data Input/Output. Open-drain 1-Wire interface pin. Also provides power to the device when used in parasite power mode. | 数据输入/输出。漏极开路1-Wire接口引脚。 在寄生电源中使用时也为设备供电 模式。 |
(二)、概览
1、DS18B20框图
2、64位ROM
●64位ROM存储着设备的唯一序列号,用于识别同一单线上连接的多个DS18B20。
3、暂存器
●暂存器包含2个字节的温度寄存器,用于存储温度传感器的数字输出。
●the scratchpad provides access to the 1-byte upper and lower alarm trigger registers (TH and TL) and the 1-byte configuration register.(暂存器提供对1字节上下报警触发寄存器(TH和TL)和1字节配置寄存器的访问。)
●TH,TL和配置寄存器均为非易失性(EEPROM),因此在设备掉电时它们将保留数据。
4、控制线
●DS18B20使用Maxim专有的1-Wire总线协议,该协议通过一个控制信号实现总线通信。
● 控制线需要一个弱上拉电阻,因为所有设备都通过一个三态端口或漏极开路端口(在DS18B20中为DQ引脚)连接到总线。
● 在此总线系统中,微处理器(主设备)使用每个设备的唯一64位代码识别并寻址总线上的设备。 因为每个设备都有唯一的代码,所以一条总线上可寻址的设备数量实际上是无限的。
5、寄生电源
● DS18B20的另一个功能是无需外部电源即可运行。当总线为高电平时,DQ引脚通过1-Wire上拉电阻提供电源。处于高电平状态的总线信号对内部电容器(CPP)充电,当总线为低电平时,该电容器会为设备供电。 这种从1-Wire总线获取电源的方法称为“寄生电源”。作为替代方案,DS18B20也可以由VDD上的外部电源供电。
(三)、测量温度
1、分辨率
用户可以将温度传感器的分辨率配置为9、10、11或12位,分别对应于0.5°C,0.25°C,0.125°C和0.0625°C的增量。上电时的默认分辨率为12位。
2、温度转换指令-Convert T [44h]
●DS18B20在低功耗空闲状态下上电。要启动温度测量和模数转换,主机必须发出Convert T [44h]命令。转换后,产生的温度数据存储在暂存器的2字节温度寄存器中,DS18B20返回其空闲状态。
●如果DS18B20由外部电源供电,则主机可以在Convert T命令后发出“读取时序”,如果DS18B20正在温度转换过程中则返回0来响应,若转换完成则返回1。如果DS18B20由寄生电源供电,则*****。
3、温度数据的存储
●温度数据以16位符号扩展的二进制补码形式存储在温度寄存器中。符号位(S)指示温度是正温度还是负温度:对于正数S = 0和负数S =1。如果DS18B20配置为12位分辨率,则温度寄存器中的所有位将包含有效数据 。对于11位分辨率,未定义位0(bit 0)。对于10位分辨率,未定义位1(bit 1)和位0(bit 0),对于9位分辨率,未定义位2、1和0。
●温度寄存器格式:
●12位分辨率转换的数字输出数据和相应温度读数的示例:
The power-on reset value of the temperature register is +85°C.(温度寄存器的上电复位值为+ 85°C)
(四)、警报信号
1、警报触发值的存储
1个字节的用户定义的二进制补码警报触发值存储在TH和TL寄存器中,符号位(S)指示该值是正数还是负数负数:对于正数S = 0,对于负数S =1。TH和TL寄存器为非易失性(EEPROM),因此在掉电时它们将保留数据。可以通过暂存器的字节2和3访问TH和TL。由于TH和TL是8位寄存器,因此TH和TL比较中仅使用温度寄存器的11至4位。
2、警报的触发
DS18B20执行完一次温度转换后,将温度值与存储在TH和TL寄存器中1个字节的用户定义的二进制补码警报触发值进行比较。如果测得的温度小于或等于TL或大于或等于TH,则存在警报条件,并且DS18B20内部会置位一个警报标志。每次温度测量后,此标志都会更新。因此,如果警报条件消失,则在下一次温度转换后,该标志将被移去。
3、主机的警报搜索
主设备可以通过发出警报搜索[ECh]
命令来检查总线上所有DS18B20的警报标志的状态。 任何置位了警报标志的DS18B20都会响应该命令,因此主机可以准确确定哪些DS18B20遇到了警报情况。 如果存在警报条件,并且TH或TL设置已更改,则应进行另一次温度转换以验证警报条件。
4、TH和TL寄存器格式
(五)、DS18B20供电
1、寄生电源
●DS18B20可以通过VDD引脚上的外部电源供电,或者可以在“寄生电源”模式下工作,这使DS18B20无需本地外部电源即可工作。寄生电源对于需要远程温度感测或空间受限的应用非常有用。图1(DS18B20框图)显示了DS18B20的寄生电源控制电路,当总线为高电平时,该电路通过DQ引脚从1-Wire总线“窃取”电源。当总线为高电平时,被盗的电荷为DS18B20供电,并且一些电荷存储在寄生功率电容器(CPP)上,以在总线为低电平时提供电能。在寄生电源模式下使用DS18B20时,必须将VDD引脚接地。在寄生电源模式下,只要满足规定的时序和电压要求(参见直流电气特性和交流电气特性),1-Wire总线和CPP就可以为DS18B20提供足够的电流以进行大多数操作。
● 但是,当DS18B20执行温度转换或将数据从暂存器传输到EEPROM时,工作电流可能高达1.5mA。该电流可能会引起连接单总线的弱上拉电阻不可接受的电压降,并且电流大于CPP所能提供的电流。
●为确保DS18B20具有足够的电源电流,无论何时进行温度转换或将数据从暂存器复制到EEPROM,都必须在1-Wire总线上提供强上拉。这可以通过使用漏极开路将总线直接拉至电源来实现,如Figure 4所示。发出 Convert T[44h]
(转换温度命令) 或Copy Scratchpad[48h]
(复制暂存器命令)后,必须在10µs(最大值)内将单总线切换到强上拉。并且在温度转换时序(
t
C
O
N
V
t_{CONV}
tCONV)或复制数据时序(
t
W
R
=
10
m
s
t_{WR}=10ms
tWR=10ms)必须一直保持强上拉状态。当强上拉功能保持时,单总线上不能进行其他活动。
2、外部电源供电
●DS18B20也可以通过将外部电源连接到VDD引脚的常规方法来供电,如图5所示。这种方法的优点是单总线不需要强上拉,并且总线不用在温度转换期间总保持高电平。建议不要在100°C以上的温度下使用寄生电源,因为DS18B20在这些温度下可能存在较高的漏电流,因此可能无法维持通信。对于可能出现这种温度的应用,强烈建议使用外部电源为DS18B20供电。
3、总线主机对供电模式的判断
●在某些情况下,总线主机可能不知道总线上的DS18B20是寄生虫供电还是由外部电源供电。 主机需要此信息来确定在温度转换期间是否应使用强上拉。 为了获得此信息,主机可以发出Skip ROM [CCh]
(跳过ROM命令),然后发出Read Power Supply [B4h]
(读电源模式命令),这条指令发出后,控制器再发出读时序。 在读取时序期间,寄生供电的DS18B20将使总线拉低,而外部供电的DS18B20将使总线保持高电平。 如果总线被拉低,主机知道在温度转换期间它必须在单总线上提供强上拉。
4、示意图
●Figure 4.在温度转换期间寄生电源供电DS18B20
●Figure 5.用外部电源为DS18B20供电
(六)、64位(激)光刻只读存储器 代码
●每个DS18B20都包含一个唯一的64位代码,该代码存储在ROM中。 ROM代码的最低8位包含DS18B20单线的系列码:28h
。 接下来的48位包含唯一序列号。 最高8位包含一个循环冗余校验码(CRC校验码),该字节是根据ROM代码的前56位(48位序列号+8位系列码)计算得出的。
(七)、存储器
1、存储器构成
●DS18B20存储器由SRAM暂存器和一个用于存储高低警报触发值TH和TL寄存器和配置寄存器的非易失性EEPROM组成。如果不使用DS18B20警报功能,则TH和TL寄存器可用作普通存储器。
●暂存器的字节0和字节1分别包含温度寄存器的LSB和MSB。 这些字节是只读的。 字节2和3提供对TH和TL寄存器的访问。 字节4包含配置寄存器数据。 字节5、6和7保留给设备内部使用,不能被覆盖。 暂存器的字节8是只读的,其中包含暂存器的字节0到7的CRC代码。
2、存储器的内部数据传输&与主机的数据传输
●使用Write Scratchpad [4Eh]
(写暂存器命令)将数据写入暂存器的字节2、3和4。 数据必须以位2为最低有效位开始传输到DS18B20。为了完整的验证数据,可在写入数据后读取暂存器(使用Read Scratchpad [BEh]
(读暂存器命令)。 读取暂存器时,数据从单总线以位0为最低有效位开始传输。要将TH,TL和配置数据从暂存器传输到EEPROM,主机必须发出Copy Scratchpad [48h]
(复制暂存器命令) 。
●当设备掉电时,EEPROM寄存器中的数据将保留; 上电时,EEPROM数据被重新加载到相应的暂存器位置。 也可以使用Recall E2 [B8h]
(调回EEPROM命令) 随时将数据从EEPROM重新加载到暂存器。 主机可以在Recall E2命令之后发出读取时序,若DS18B20正在进行重调用时则返回0,若完成重调用时返回1来指示重调用的状态。
●DS18B20存储器映射
(八)、配置寄存器
●暂存器的字节4(Byte 4)包含配置寄存器,其配置如Figure 8所示。用户可以在其中使用R0和R1位设置DS18B20的转换分辨率。这些位的上电默认值为R0 = 1和R1 = 1(12位分辨率)。请注意,分辨率和转换时间之间存在直接的关系。配置寄存器中的位7和位0至4保留给设备内部使用,不能被覆盖(禁止写入数据);在读回数据时,bit 0-bit 4为1,bit 7为0。
Figure 8. Configuration Register
Table 2. 温度计分辨率配置
(九)、CRC 发生器
●CRC字节是DS18B20 64位ROM代码的一部分,存储在暂存器的第9个字节(Byte 8)中。CRC码由ROM代码的前56位计算得出,并包含在ROM的最高有效字节中。CRC是根据存储在暂存器中的数据计算得到,因此当暂存器中的数据更改时,它也会更改。
●从DS18B20读取数据时,CRC为总线主机提供了一种数据验证方法。为了验证是否已正确读取数据,总线主机必须从接收到的数据中重新计算CRC,然后将此值与存储在DS18B20的64位ROM中CRC(for ROM reads用于ROM读取)或暂存器CRC(for scratchpad reads用于暂存器读取)进行比较。如果计算出的CRC与读取的CRC相匹配,则说明已正确接收数据。比较CRC值和是否继续操作的决定完全由总线主机决定。如果DS18B20 CRC(ROM或暂存器)与总线主机产生的值不匹配,则DS18B20内部没有电路可阻止命令序列执行。
●CRC(ROM或暂存器)的等效多项式函数为:
C
R
C
=
X
8
+
X
5
+
X
4
+
1
CRC = X^8 + X^5 + X^4 + 1
CRC=X8+X5+X4+1
●总线主机可以重新计算CRC,并使用Figure 9所示的多项式生成器将其与DS18B20的CRC值进行比较。该电路由移位寄存器和XOR门组成,并且移位寄存器的各位被初始化为0。 从ROM代码的最低有效位或暂存器中的最低有效位即字节0(Byte 0),则一次应将一位移入移位寄存器。 从ROM移入第56位或从暂存器移入最高有效位Byte 7后,多项式生成器将包含重新计算的CRC。 接下来,必须将DS18B20的8位ROM代码或暂存器CRC移入电路。 此时,如果重新计算的CRC正确,则移位寄存器将包含全0。
二、单总线系统(1-WIRE BUS SYSTEM)
●单总线系统使用单个总线主机来控制一个或多个从机。 DS18B20始终是从机。 当总线上只有一个从机时,该系统称为“单点”系统; 如果总线上有多个从机,则系统为“多点”。
●所有数据和命令的传输都是首先从最低有效位通过单总线。
●单总线系统的讨论分为以下三个主题:硬件配置,操作顺序和单总线信号(信号类型和时序)
(一)、硬件配置
1、一条数据线
●单总线根据定义仅具有一条数据线。 每个设备(主设备或从设备)都通过漏极开路或三态端口连接到数据线。 这样一来,每台设备在设备未传输数据时,该总线可供其他设备使用。 DS18B20的单端口(DQ引脚)是漏极开路的,其内部电路如Figure 10所示。
2、外部上拉电阻
●单总线需要一个大约5kΩ的外部上拉电阻;因此,单总线的空闲状态为高电平。
3、执行过程的暂停与恢复
●如果出于某种原因需要暂停某一执行过程,如果想要恢复该执行过程的话,则总线必须保持空闲状态。
●只要单总线在恢复期间处于非活动(高电平)状态,位与位之间的恢复时间就会无限长。
4、从机的复位
●如果总线保持低电平的时间超过480µs,总线上的所有器件将被复位。
5、Figure 10. Hardware Configuration
(二)、操作顺序
●访问DS18B20的操作顺序如下:
步骤1:初始化
步骤2:ROM命令(随后进行任何必需的数据交换)
步骤3:功能命令(随后进行任何必需的数据交换)
●每次访问DS18B20时都必须遵循此操作顺序,这一点非常重要,因为如果操作顺序中的任何步骤丢失或顺序混乱,DS18B20都不会响应。
该规则的例外是Search ROM[F0h]
(搜索ROM命令) 和Alarm Search[ECh]
(搜索报警命令) 。 发出这两个ROM命令中的任何一个后,主机必须按顺序返回步骤1。
1、 步骤1:初始化
●单总线上的所有操作均以初始化序列开始。 初始化序列包括总线主机发送的复位脉冲,然后是从机发送的存在脉冲。 存在脉冲使总线主机知道从机(例如DS18B20)在总线上并准备就绪。
2、 步骤2:ROM命令
●总线主机检测到存在脉冲后,可以发出ROM命令。 这些命令在每个从机的唯一64位ROM代码上运行,并且如果单总线上有很多器件,则允许主机选择特定器件。 这些命令还允许主机确定总线上有多少个设备和什么类型的设备,或者是否有设备遇到警报情况。 ROM命令有五个,每个命令的长度为8位。 主设备在发出DS18B20功能命令之前必须发出适当的ROM命令。
①Search ROM[F0h]
(搜索ROM命令)
●最初启动系统电源时(当系统上电初始化时),主机必须通过识别总线上所有从机的ROM代码,来使主机可以确定从机的数量及其设备类型。
●主机通过消除过程来得到ROM代码,该过程要求主机执行Search ROM周期(即Search ROM命令后进行数据交换)所需的次数,以识别所有从设备。(The master learns the ROM codes through a process of elimination that requires the master to perform a Search ROM cycle (i.e., Search ROM command followed by data exchange) as many times as necessary to identify all of the slave devices. )
●如果总线上只有一个从机,则可以使用更简单的READ ROM [33h]
(读取ROM命令) (见下文)代替Search ROM命令。
●有关Search ROM过程的详细说明,请参见iButton®标准手册,网址为www.maxim-ic.com/ibuttonbook。
●在每个Search ROM周期之后,总线主机必须按事务顺序返回到步骤1(初始化)。
②READ ROM [33h]
(读取ROM命令)
●该命令仅在总线上有一个从机时使用。该命令允许总线主控器无需使用Search ROM[F0h]
(搜索ROM命令) 即可读取从机的64位ROM代码。如果总线上有多个从机,则当所有从机尝试同时响应时,将发生数据冲突。
③MATCH ROM [55h]
(匹配ROM命令)
●MATCH ROM [55h]
(匹配ROM命令) 后跟一个64位ROM代码序列,使总线主机可以在多点或单点总线上确定一个特定从机。 只有与64位ROM代码序列完全匹配的从机才会响应主机发出的功能命令。 总线上的所有其他从机将等待复位脉冲。
④SKIP ROM [CCh]
(跳过ROM命令)
●主机可以使用该命令同时寻址总线上的所有设备,而无需发送任何ROM代码信息。 例如,主机可以通过发送SKIP ROM [CCh]
(跳过ROM命令) 和随后的Convert T [44h]命令来使总线上的所有DS18B20都执行同时进行温度转换操作。
●请注意,只有在总线上只有一个从机时,SKIP ROM [CCh]
(跳过ROM命令) 之后只能跟随Read Scratchpad [BEh]命令。
●在单点总线的情况下使用该命令,允许主机直接读取而不发送从机的64位ROM代码,可以节省时间。
●如果有多个从机,则SKIP ROM [CCh]
(跳过ROM命令) 后跟Read Scratchpad命令将导致总线上的数据冲突,因为多个设备将尝试同时传输数据。
⑤ALARM SEARCH [ECh]
(搜索报警命令)
●该命令的操作流程与Search ROM命令的操作流程相同,只不过只有设置了警报标志的从机才会响应。
●该命令允许主设备确定在最近一次的温度转换过程中是否有DS18B20发生了警报。
●在每个警报搜索周期(即警报搜索命令后进行数据交换)之后,总线主机必须按操作顺序返回到步骤1初始化。
3、步骤3:功能命令
总线主机使用ROM命令寻址要与其通信的DS18B20之后,主机可以发出DS18B20功能命令之一。这些命令允许主机写入和读取DS18B20的暂存器,启动温度转换并确定电源模式。
①Convert T[44h]
(转换温度命令)
●该命令启动一次温度转换。
●转换后,产生的温度转换结果数据存储在暂存器的2个字节温度寄存器中,DS18B20返回其低功耗空闲状态。
●如果器件在寄生电源模式下发出该命令,则在发出此命令后的10µs(最大值)内,主机必须在转换期间(
t
C
O
N
V
t_{CONV}
tCONV)启用单总线上的强上拉,如为DS18B20供电部分中所述。
●如果DS18B20由外部电源供电,则主机可以在Convert T[44h]
(转换温度命令) 后发出读取时序,如果DS18B20正在温度转换过程中则返回0,若已转换完成则返回1来响应。
●在寄生电源模式下,由于转换期间总线被强上拉电路拉高,因此无法使用此通知技术。
②Write Scratchpad [4Eh]
(写暂存器命令)
●该命令允许主机将3个字节(3 bytes)的数据写入DS18B20的暂存器。
第一个数据字节写入TH寄存器(暂存器的字节2),第二个字节写入TL寄存器(字节3),第三个字节写入配置寄存器(字节4)。数据必须首先从最低有效位开始传输。
●在主机发出复位信号之前,必须写入所有三个字节,否则数据可能已损坏
③Read Scratchpad [BEh]
(读暂存器命令)
●该命令允许主机读取暂存器的内容。 数据传输从最低有效位字节0开始,一直进行下去直到暂存器的最后一个字节,直到读取第9个字节(Byte 8–CRC)。如果只需要暂存器数据的一部分,则主机可以随时发出复位以终止读取。
④Copy Scratchpad [48h]
(复制暂存器命令)
●该命令将暂存器TH,TL和配置寄存器(字节2、3和4)的内容复制到EEPROM。 如果从机在寄生电源模式下使用,则在发出该命令后的10µs(最大值)内,主机必须在单总线上强上拉至少保持10ms。
⑤Recall E2 [B8h]
(调回EEPROM命令)
●该命令从EEPROM调出警报触发值(TH和TL)和配置寄存器的数据,并将数据分别放在暂存器的字节2、3和4中。
●主设备可以在 Recall E2 [B8h]
(调回EEPROM命令) 命令之后发出读取时序。并且DS18B20将返回调用标志:正在进行调用时发送0和完成调用时发送1来指示调用状态。
●上电后会自动进行调回操作,因此只要器件一上电,暂存器中便会存储有有效数据。
⑥Read Power Supply [B4h]
(读电源模式命令)
●主机给DS18B20发出该命令,后跟一个读取时序,以确定总线上的任何DS18B20是否正在使用寄生电源。
●在读取时序中,寄生电源供电的DS18B20将拉低总线,而外部供电的DS18B20将使总线保持高电平。
Table 3. DS18B20功能命令集
命令 | 代码 | 参数或返回值 | 说明 | 发出命令后的单总线活动 |
---|---|---|---|---|
温度转换命令 | ||||
转换温度 | 0X44 | 0-转换 1-完成 | 启动温度转换,转换结果存放在暂存器的0~1字节 | DS18B20将转换状态发送给主设备(不适用于寄生虫供电的DS18B20)。 |
存储器命令 | ||||
读暂存器 | 0XBE | 9字节数据 | 读取整个暂存器的0~8字节,包括Byte CRC | DS18B20最多可向主机发送9个数据字节。 |
写暂存器 | 0X4E | TH TL CR | 将数据写入暂存器字节2、3和4(TH,TL和配置寄存器)。 | 主机将3个数据字节发送到DS18B20。 |
复制暂存器 | 0X48 | - | 将暂存器TH,TL和配置寄存器(2~4字节)的数据复制到EEPROM | None |
调回EEPROM | 0XB8 | 0-调回 1-完成 | 将EEPROM的值(TH,TL和配置寄存器的数据)调回到暂存器2~4字节。 | DS18B20将调回状态发送到主机。 |
读电源模式 | 0XB4 | - | 向主机发出DS18B20供电模式信号,确定DS18B20是否使用寄生供电模式 | DS18B20将电源状态发送到主机。 |
Note 1:转换温度:对于寄生虫供电的DS18B20,主机必须在温度转换期间从单总线上使能上拉,并将其从暂存器复制到EEPROM。其他总线活动不能发生在这段时间。
Note 2:读暂存器:主机可以通过发出复位信号随时中断数据传输。
Note 3:写暂存器:必须先写入所有三个字节,然后才能发出复位信号。
(二)、单总线信号
●DS18B20使用严格的单通信协议来确保数据完整性。
●该协议定义了几种信号类型:复位脉冲,存在脉冲,写0,写1,读0和读1。所有这些信号,除存在脉冲外,都是由总线主机发出的。
1、初始化过程—复位和存在脉冲
●与DS18B20的所有通信均以初始化序列开始,该序列由主机发出的复位脉冲和DS18B20发出的存在脉冲(应答脉冲)组成。
●如Figure 13所示。当主机发送完复位脉冲后若有存在脉冲时,则表示DS18B20向主机表明它在总线上并准备好发送和接收数据。
●在初始化过程中,总线主机通过将单总线拉低至少480µs来发送(TX)一个复位脉冲。然后,主机释放总线并进入接收模式(RX)。释放总线时,5kΩ上拉电阻将单总线拉高。
●DS18B20检测到该上升沿时,将等待15µs至60µs,然后通过将单总线拉低60µs至240µs来发送存在脉冲。
2、读/写时序
●总线主机在写入时序期间将数据写入DS18B20,并在读取时序期间从DS18B20读取数据。(DS18B20的数据读写是通过时序处理来确认信息交换的)每个时序通过单总线传输一位数据。
Figure 14 读/写时序图
①、写时序
●写入时序有两种类型:写1时序和写0时序。
●总线主机使用写1时序将逻辑1写入DS18B20,使用写0时序将逻辑0写入DS18B20。
●所有写时序的持续时间必须至少为60µs,各个写时序之间的恢复时间必须至少为1µs。
●两种类型的写时序均由主机把单总线(数据线)从逻辑高电平拉为低电平开始(见Figure 14)。
●为了产生写1时序,将单总线拉低后,总线主机必须在15µs内释放单总线。释放总线后,5kΩ上拉电阻会将总线拉高。
●为了产生一个写0时序,将单总线拉低后,总线主机必须在该时序的持续时间内(至少60µs)继续保持总线为低电平。
●DS18B20在主机初始化写时序后的15µs至60µs的窗口内对单总线进行采样。如果在采样窗口中总线为高电平,则将1写入DS18B20。如果线路为低电平,则将0写入DS18B20
②、读时序
●DS18B20仅在主机发出读取时序时才能将数据发送到主机。因此,主机在发出Read Scratchpad [BEh]或Read Power Supply [B4h]命令后必须立即开始读取时序,以便DS18B20提供所需的数据。另外,主机可以在发出Convert T [44h]或Recall E2 [B8h]命令以找出状态后开始读取时序。S18B20功能命令部分中介绍的操作。
●所有读取时序的持续时间必须至少为60µs,时序之间的恢复时间最少为1µs。
●主机通过将单总线拉低至少1µs,然后释放总线来启动读取时序(见Figure14)。
●主机启动读取时序后,DS18B20将开始在总线上发送1或0。DS18B20通过将总线保持高电平来发送1,而通过将总线拉低来发送0。当发送0时,DS18B20将在时序结束时释放总线,并且总线将被上拉电阻拉回到高空闲状态。
●从DS18B20输出的数据在启动读取时序产生的下降沿之后15µs内有效。 因此,主机必须释放总线,然后在时序开始后的15µs内对总线状态进行采样。
●Figure15说明,对于一个读时序,TINIT,TRC和TSAMPLE之和必须小于15µs。
●Figure16 指出:通过使TINIT和TRC尽可能短,并把主机采样时间放在15µs的最后,来使系统剩余时间最大化。
●Figure 15.详细的主机读1时序
●Figure 16.推荐的主机读1时序
三、DS18b20操作示例
DS18b20操作示例1
在此示例中,总线上有多个DS18B20,它们正在使用寄生电源。总线主机在特定的DS18B20中启动温度转换,然后读取其暂存器并重新计算CRC以验证数据。
主机模式 | 数据(LSB优先) | 说明 |
---|---|---|
T x T_x Tx | 复位 | 主机发出复位脉冲 |
R x R_x Rx | 存在 | DS18B20s发送应答脉冲 |
T x T_x Tx | 55h | 主机发出匹配ROM命令 |
T x T_x Tx | 64位ROM代码 | 主机发送DS18B20 ROM代码 |
T x T_x Tx | 44h | 主机发送转换温度命令 |
T x T_x Tx | DQ数据线被强上拉拉高 | 主机在转换期间( t C O N V t_{CONV} tCONV)对DQ施加强上拉。 |
T x T_x Tx | 复位 | 主机发出复位脉冲 |
R x R_x Rx | 存在 | DS18B20s发送应答脉冲 |
T x T_x Tx | 55h | 主机发出匹配ROM命令 |
T x T_x Tx | 64位ROM代码 | 主机发送DS18B20 ROM代码 |
T x T_x Tx | BEh | 主机发送读暂存器命令 |
R x R_x Rx | 9字节数据 | 主机读取包括CRC在内的整个暂存器。 然后,主机重新计算暂存器中前八个数据字节的CRC,并将计算出的CRC与读取的CRC(字节8)进行比较。 如果相同,则主机继续向下进行;如果不同,则重复读取操作。 |
DS18b20操作示例2
在此示例中,总线上只有一个DS18B20,它正在使用寄生电源。 主机写入DS18B20暂存器中的TH,TL和配置寄存器,然后读取暂存器并重新计算CRC以验证数据。 然后,主机将暂存器中的内容复制到EEPROM。
主机模式 | 数据(LSB优先) | 说明 |
---|---|---|
T x T_x Tx | 复位 | 主机发出复位脉冲 |
R x R_x Rx | 存在 | DS18B20s发送应答脉冲 |
T x T_x Tx | CCh | 主机发送跳过ROM命令 |
T x T_x Tx | 4Eh | 主机发送写暂存器命令 |
T x T_x Tx | 3字节数据 | 主机将三个字节的数据发送到暂存器(TH,TL和配置寄存器) |
T x T_x Tx | 复位 | 主机发出复位脉冲 |
R x R_x Rx | 存在 | DS18B20s发送应答脉冲 |
T x T_x Tx | CCh | 主机发送跳过ROM命令 |
T x T_x Tx | BEh | 主机发送读暂存器命令 |
R x R_x Rx | 9字节数据 | 主机读取包括CRC在内的整个暂存器。 然后,主机重新计算暂存器中前八个数据字节的CRC,并将计算出的CRC与读取的CRC(字节8)进行比较。 如果相同,则主机继续向下进行;如果不同,则重复读取操作。 |
T x T_x Tx | 复位 | 主机发出复位脉冲 |
R x R_x Rx | 存在 | DS18B20s发送应答脉冲 |
T x T_x Tx | CCh | 主机发送跳过ROM命令 |
T x T_x Tx | 48h | 主机发送复制暂存器命令 |
T x T_x Tx | DQ数据线被强上拉拉高 | 在复制操作进行期间,主机对DQ施加强上拉至少10ms。 |