电子驿站www.ourmpu.comDS18B20单总线数字温度计(COUNT_REMAIN)。所需的最后一个数值是在该温度处每一摄氏度的计数个数(COUNT_PER_C)。于是,用户可以使用下式计算实际温度:表1 温度/数据关系温度数字输出(二进制)数字输出(十六进制)+125℃00000000 1111101000FAh+25℃00000000001100100032h+1/2℃0001h0000000000000001+0℃00000000000000000000h-1 /2℃FFFFhFFCEh-25℃OOO-55℃1111111110010010FF92h2.4运用一告警信号在DSI820完成温度变换之后,温度值与贮存在TH和TL内的触发值相比较。因为这些寄存器仅仅是8位,所以0.5℃位在比较时被忽略。TH或TL的最高有较位直接对应于16位温度寄存器的符号位。如果温度测量的结果高于TH或低于TL,那么器件内告警标志将置位。每次温度测量更新此标志。只要告警标志置位,DSI820将对告警搜索命令作出响应。这允许并联连接许多DS820,同时进行温度测量。如果某处温度超过极限,那么可以识别出正在告警的器件并立即将其读出而不必读出非告警的器件。2.564位激光ROM每一DSI820包括一个唯一的64位长的ROM编码。开给的8位是单线产品系列编码(DSI820编码是10h)。接着的48位是唯一的系列号。最后的8位是开始56位CRC(见图5)。64位ROM和ROM操作控制部分允许DSI820作为一个单线器件工作并遵循“单线总线系统”一节中所详述的单线协议。直到ROM操作协议被满足,DSI820控制部分的功能是不可访问的。此协议在ROM操作协议流程图(图6)中叙述。单线总线主机必须首先操作五种ROM操作命令之一:1)ReadROM(读ROM),2)MatchROM(匹配ROM),3)SearchROM(搜索ROM),4)SkipROM(跳过ROM),或5)AlarmSearch(告警搜索)。在成功地执行了ROM操作序列之后,,DSI820特定的功能便可访问,然后总线上主机可提供六个存贮器和控制功能命令之一。图564位激光ROM8位CRC编号48位序列号8位产品系列编码MSBLSBMSBLSBMSBLSB(最高有效位)(最低有效位)5电子解站更多的单片机资料、源程序及单片机教程请登陆网站下载!476485321http://www.ourmpu.comE-mail:support@ourmpu.comQQ:451338524
DS18B20 单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:// www.ourmpu.com E-mail:support@ourmpu.com QQ:451338524 476485321 5 (COUNT_REMAIN)。所需的最后一个数值是在该温度处每一摄氏度的计数个数(COUNT_PER_C)。于是,用户可以使 用下式计算实际温度: 表 1 温度/数据关系 温度 数字输出(二进制) 数字输出(十六进制) +125℃ 00000000 11111010 00FAh +25℃ 00000000 00110010 0032h +1/2℃ 00000000 00000001 000lh +0℃ 00000000 00000000 0000h -1/2℃ 11111111 11111111 FFFFh -25℃ 11111111 11001110 FFCEh -55℃ 11111111 10010010 FF92h 2.4 运用 — 告警信号 在 DSl820 完成温度变换之后,温度值与贮存在 TH 和 TL 内的触发值相比较。因为这些寄存器仅仅是 8 位,所以 0.5 ℃位在比较时被忽略。TH 或 TL 的最高有较位直接对应于 16 位温度寄存器的符号位。如果温度测量的结果高于 TH 或低 于 TL,那么器件内告警标志将置位。每次温度测量更新此标志。只要告警标志置位,DSl820 将对告警搜索命令作出响应。 这允许并联连接许多 DSl820,同时进行温度测量。如果某处温度超过极限,那么可以识别出正在告警的器件并立即将其读 出而不必读出非告警的器件。 2.5 64 位激光 ROM 每一 DSl820 包括一个唯一的 64 位长的 ROM 编码。开绐的 8 位是单线产品系列编码(DSl820 编码是 10h)。接着的 48 位是唯一的系列号。最后的 8 位是开始 56 位 CRC(见图 5)。64 位 ROM 和 ROM 操作控制部分允许 DSl820 作为一个 单线器件工作并遵循“单线总线系统”一节中所详述的单线协议。直到 ROM 操作协议被满足,DSl820 控制部分的功能是 不可访问的。此协议在 ROM 操作协议流程图(图 6)中叙述。单线总线主机必须首先操作五种 ROM 操作命令之一:1) Read ROM(读 ROM),2)Match ROM(匹配 ROM),3)Search ROM(搜索 ROM),4)Skip ROM(跳过 ROM),或 5) Alarm Search(告警搜索)。在成功地执行了 ROM 操作序列之后,DSl820 特定的功能便可访问,然后总线上主机可提供 六个存贮器和控制功能命令之一。 图 5 64 位激光 ROM 8 位 CRC 编号 48 位序列号 8 位产品系列编码 MSB LSB MSB LSB MSB LSB (最高有效位) (最低有效位)
电子驿站www.ourmpu.comDS18B20单总线数字温度计图6ROM操作流程图ASTERESETPULSEPSTSENTEPULSE+MASTERTROMFUNCTIONCOMMANDSSEChMEAATROFAALARMSEARCHCOMMANDCOMMANDCOMMANDCOMMANDCOMMAND,OITIONPONDS1820TxFAMILYMASTERTXBITO1BYTE人DS1820TxBIT0DS1620 TxBIT 0MASTERTXBITONSERALRUMER1MATCH6BYTESDS1820TxBITCR10DS1820TxBITMASTER Tx BIT 1MASTER Tx BIT↑NMATCHMATCH2DS1620 Tx BIT 63MASTERTxBIT63DS1820TxBIT63MASTERTxBIT63dBIT63BIT63IATOMAATMASTERTXMEMORYORCONTROLFUNCTIONCOMMAND2.6CRC产生DSI820有一存贮在64位ROM的最高有效字节内的8位CRC。总线上的主机可以根据64位ROM的前56位计算机CRC的值并把它与存贮在DSI82O内的值进行比较以决定ROM的数据是否已被主机正确地接收。CRC的等效多项式函数为:CRC=X*+X'+X*+16电子解站更多的单片机资料、源程序及单片机教程请登陆网站下载!476485321http://www.ourmpu.comE-mail:support@ourmpu.comQQ:451338524
DS18B20 单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:// www.ourmpu.com E-mail:support@ourmpu.com QQ:451338524 476485321 6 图 6 ROM 操作流程图 2.6 CRC 产生 DSl820 有一存贮在 64 位 ROM 的最高有效字节内的 8 位 CRC。总线上的主机可以根据 64 位 ROM 的前 56 位计算机 CRC 的值并把它与存贮在 DSl820 内的值进行比较以决定 ROM 的数据是否已被主机正确地接收。CRC 的等效多项式函数 为: CRC=X8 +X5 +X4 +1
电子驿站www.ourmpu.comDS18B20单总线数字温度计DSI820也利用与上述相同的多项式函数产生一个8位CRC值并把此值提供给总线的主机以确认数据字节的传送。在使用CRC来确认数据传送的每一种情况中,总线主机必须使用上面给出的多项式函数计算CRC的值并把计算所得的值或者与存贮在DSI820的64位ROM部分中的8位CRC值(ROM读数),或者与DSI820中计算得到的8位CRC值(在读暂存存贮器中时,它作为第九个字节被读出),进行比较。CRC值的比较和是否继续操作都由总线主机来决定。当存贮在DSI820内或由DSI820计算得到的CRC值与总线主机产生的值不相符合时,在DSI820内没有电路来阻止命令序列的继续执行。总线CRC可以使用如图7所示由一个移位寄存器和“异或”(XOR)门组成的多项式产生器来产生。其它有关Dallas公司单线循环余校验的信息可参见标题为“理解和使用Dallas半导体公司接触式存贮器产品”的应用注释。移位寄存器的所有位被初始化为零。然后从产品系列编码的最低有效位开始,每次移入一位。当产品系列编码的8位移入以后,接着移入序列号。在序列号的第48位进入之后,移位寄存器便包含了CRC值。移入CRC的8位应该使移位寄存器返回至全零。八(MSB)图7单线CRC编码N2.7存贮器DSI820的存贮器如图所示那样被组织。存贮器由一个高速暂存(便筹式)RAM和一个非易失性,电可擦除(E)RAM组成,后者存贮高温度和低温度和触发器TH和TL。暂存存贮器有助于在单线通信时确保数据的完整性。数据首先写入暂存存贮器,在那里它可以被读回。当数据被校验之后,复制暂存存贮器的命令把数据传送到非易失性(E)RAM。这一过程确保了更改存贮器时数据的完整性。暂存器字节E'RAM温度LSB0温度MSB1TH/用户字节12TH/用户字节1TL/用户字节23TL/用户字节24保留5保留6COUNT REMAIN7COUNTPER℃8CRC图8DSI820存忙器映象图L电子解站更多的单片机资料、源程序及单片机教程请登陆网站下载!http://www.ourmpu.comE-mail:support@ourmpu.comQQ:451338524476485321
DS18B20 单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:// www.ourmpu.com E-mail:support@ourmpu.com QQ:451338524 476485321 7 DSl820 也利用与上述相同的多项式函数产生一个 8 位 CRC 值并把此值提供给总线的主机以确认数据字节的传送。在 使用 CRC 来确认数据传送的每一种情况中,总线主机必须使用上面给出的多项式函数计算 CRC 的值并把计算所得的值或 者与存贮在 DSl820 的 64 位 ROM 部分中的 8 位 CRC 值(ROM 读数),或者与 DSl820 中计算得到的 8 位 CRC 值(在读 暂存存贮器中时,它作为第九个字节被读出),进行比较。CRC 值的比较和是否继续操作都由总线主机来决定。当存贮在 DSl820 内或由 DSl820 计算得到的 CRC 值与总线主机产生的值不相符合时,在 DSl820 内没有电路来阻止命令序列的继续 执行。 总线 CRC 可以使用如图 7 所示由一个移位寄存器和“异或”(XOR)门组成的多项式产生器来产生。其它有关 Dallas 公司单线循环冗余校验的信息可参见标题为“理解和使用 Dallas 半导体公司接触式存贮器产品”的应用注释。 移位寄存器的所有位被初始化为零。然后从产品系列编码的最低有效位开始,每次移入一位。当产品系列编码的 8 位 移入以后,接着移入序列号。在序列号的第 48 位进入之后,移位寄存器便包含了 CRC 值。移入 CRC 的 8 位应该使移位 寄存器返回至全零。 图 7 单线 CRC 编码 2.7 存贮器 DSl820 的存贮器如图所示那样被组织。存贮器由一个高速暂存(便笺式)RAM 和一个非易失性,电可擦除(E 2)RAM 组成,后者存贮高温度和低温度和触发器 TH 和 TL。暂存存贮器有助于在单线通信时确保数据的完整性。数据首先写入暂 存存贮器,在那里它可以被读回。当数据被校验之后,复制暂存存贮器的命令把数据传送到非易失性(E 2)RAM。这一过 程确保了更改存贮器时数据的完整性。 暂存器 字节 E2RAM 温度 LSB 温度 MSB TH/ 用户字节 1 TL/ 用户字节 2 保留 保留 COUNT REMAIN COUNT PER℃ CRC 图 8 DSl820 存贮器映象图 0 1 2 3 4 5 6 7 8 TH/ 用户字节 1 TL/ 用户字节 2
电子驿站www.ourmpu.comDS18B20单总线数字温度计暂存存贮器是按8位字节存储器来组织的。头两个字节包含测得温度信息。第三和第四个字节是TH和TL的易失性拷贝,在每一次上电复位时被刷新。接着的两个字节没有使用,但是在读回时,它们呈现为逻辑全1。第七和第八个字节是计数寄存器,它们可用于获得较高的温度分辨率(见“运用一测量温度”一节)。还有第九个字节,它可用ReadScratchpad(读暂存存贮器)命令读出。该字节包含一个循环元余校验(CRC)字节,它是前面所有8个字节的CRC值。此CRC值以“CRC产生”一节中所述的方式产生。2.8单线总线系统单线总线是一种具有一个总线主机和一个或若干个从机(从属器件)的系统。DS1820起从机的作用。这种总线系统的讨论分为三个题目:硬件接法,处理顺序,以及单线信号(信号类型与定时)。2.8.1硬件接法根据定义,单线总线只有一根线:这一点是重要的,即线上的第一个器件能在适当的时间驱动该总线。为了做到这一点,第一个连接到单线总线上的器件必须具有漏极开路或三态输出。DS1820的单线接口(I/O引脚是漏极开路的,其内部等效电路如图9所示)。多站(multidrop)总线由单线总线和多个与之相连的从属器件组成。单线总线要求近似等于5kQ的上拉电阻。单线总线的空闲状态是高电平。不管任何原因,如果执行需要被挂起,那么,若要重新恢复执行,总线必须保持在空闲状态。如果不满足这一点且总线保持在低电平时问大于480us,那么总线上所有器件均被复位。存在脉冲(presencepulse)使总线主机知道DSI820在总线上并已准备好工作。详情见“单线信号”一节。+5VNMBUSMASTERDS18201-WREPORT4.7KMRxADJATvp.TMOPETARx=RECEIVEVTX -TRANSMIT图9硬件接法2.8.2处理顺序经过单线接口访问DSI820的协议(protocol)如下:·初始化·ROM操作命令·存贮器操作命令·处理/数据2.8.2.1初始化单线总线上的所有处理均从初始化序列开始。初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。2.8.2.2ROM操作命令一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一。所有ROM操作命令均为8位长。这8电子解站更多的单片机资料、源程序及单片机教程请登陆网站下载!http://www.ourmpu.comE-mail:support@ourmpu.comQQ:451338524476485321
DS18B20 单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:// www.ourmpu.com E-mail:support@ourmpu.com QQ:451338524 476485321 8 暂存存贮器是按 8 位字节存储器来组织的。头两个字节包含测得温度信息。第三和第四个字节是 TH 和 TL 的易失性 拷贝,在每一次上电复位时被刷新。接着的两个字节没有使用,但是在读回时,它们呈现为逻辑全 1。第七和第八个字节 是计数寄存器,它们可用于获得较高的温度分辨率(见“运用一测量温度”一节)。 还有第九个字节,它可用 Read Scratchpad(读暂存存贮器)命令读出。该字节包含一个循环冗余校验(CRC)字节, 它是前面所有 8 个字节的 CRC 值。此 CRC 值以“CRC 产生”一节中所述的方式产生。 2.8 单线总线系统 单线总线是一种具有一个总线主机和一个或若干个从机(从属器件)的系统。DSl820 起从机的作用。这种总线系统 的讨论分为三个题目:硬件接法,处理顺序,以及单线信号(信号类型与定时)。 2.8.1 硬件接法 根据定义,单线总线只有一根线:这一点是重要的,即线上的第一个器件能在适当的时间驱动该总线。为了做到这一 点,第一个连接到单线总线上的器件必须具有漏极开路或三态输出。DSl820 的单线接口(I/O 引脚是漏极开路的,其内 部等效电路如图 9 所示)。多站(multidrop)总线由单线总线和多个与之相连的从属器件组成。单线总线要求近似等于 5k Ω的上拉电阻。 单线总线的空闲状态是高电平。不管任何原因,如果执行需要被挂起,那么,若要重新恢复执行,总线必须保持在空 闲状态。如果不满足这一点且总线保持在低电平时问大于 480us,那么总线上所有器件均被复位。 存在脉冲(presence pulse)使总线主机知道 DSl820 在总线上并已准备好工作。详情见“单线信号”一节。 图 9 硬件接法 2.8.2 处理顺序 经过单线接口访问 DSl820 的协议(protocol)如下: ·初始化 ·ROM 操作命令 ·存贮器操作命令 ·处理/数据 2.8.2.1 初始化 单线总线上的所有处理均从初始化序列开始。初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉 冲。 2.8.2.2 ROM 操作命令 一旦总线主机检测到从属器件的存在,它便可以发出器件 ROM 操作命令之一。所有 ROM 操作命令均为 8 位长。这
电子驿站www.ourmpu.comDS18B20单总线数字温度计些命令列表如下(参见图6的流程图):·ReadROM(读ROM[33h]此命令允许总线主机读DSI820的8位产品系列编码,唯一的48位序列号,以及8位的CRC。此命令只能在总线上仅有一个DS1820的情况下可以使用。如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象(漏极开路会产生“线与”的结果)。·MatchROM("符合”ROM) [55h]“符合”ROM命令。后继以64位的ROM数据序列,允许总线主机对多点总线上特定的DSI820寻址。只有与64位ROM序列严格相符的DSI820才能对后继的存贮器操作命令作出响应。所有与64位ROM序列不符的从片将等待复位脉冲。此命令在总线上有单个或多个器件的情况下均可使用。·SkipROM(“跳过”ROM)[CCh]在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。如果在总线上存在多于一个的从属器件而且在SkipROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突(漏极开路下拉会产生“线与”的效果)。·SearchROM(搜索ROM)[FOh)当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。搜索ROM命令允许总线主机使用一种“消去”(elimination)处理来识别总线上所有从片的64位ROM编码。·AlarmSearch(告警搜索)[ECh]此命令的流程与搜索ROM命令相同。但是,仅在最近一次温度测量出现告警的情况下,DS1820才对此命令作出响应。告警的条件定义为温度高于TH或低于TL。只要DS1820一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值,或者改变TH或TL的设置使得测量值再一次位于允许的范围之内。贮存在EEPROM内的触发器值用于告警。·ROM搜索举例ROM搜索过程是简单三步过程的重复:读一位,读核位的补码(complement),然后写所需的那一位的值。总线主机在ROM的每位上完成这一简单的三步过程。在全部过程完成之后,总线主机便知道个器件中ROM的内容。器件中其余的数以及它们的ROM编码可以由另外一个过程来识别。以下ROM搜索过程的例子假设四个不同的器件连接到同一条单线总线上。四个器件的ROM数据如下所示:ROMI00110101...ROM210101010...ROM311110101...ROM400010001...搜索过程如下:1.总线主机通过发出复位脉冲开始初始化序列,从属器件通过发出同时的存在脉冲作出响应。2.然后总线主机在单线总线上发出搜索ROM命令。3.总线主机从单线过程中读一位。每一器件通过把它们各自。ROM数据的第一位的值放到单线总线上来作出响应。ROMI和ROM4:将把一个0放在单线总线上,即,把它拉至低电平。ROM2和3通过使总线停留在高电平而把1放在单线总线上。结果是线上所有器件的逻辑“与”,因此总线主机接收到一个0。总线主机读另一位。因为搜索ROM数据命令9电子解站更多的单片机资料、源程序及单片机教程请登陆网站下载!http://www.ourmpu.comE-mail: support@ourmpu.comQQ:451338524476485321
DS18B20 单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:// www.ourmpu.com E-mail:support@ourmpu.com QQ:451338524 476485321 9 些命令列表如下(参见图 6 的流程图): ·Read ROM(读 ROM)[33h] 此命令允许总线主机读 DSl820 的 8 位产品系列编码,唯一的 48 位序列号,以及 8 位的 CRC。此命令只能在总线上 仅有一个 DSl820 的情况下可以使用。如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据 冲突的现象(漏极开路会产生“线与”的结果)。 ·Match ROM(“符合”ROM) [55h] “符合”ROM 命令。后继以 64 位的 ROM 数据序列,允许总线主机对多点总线上特定的 DSl820 寻址。只有与 64 位 ROM 序列严格相符的 DSl820 才能对后继的存贮器操作命令作出响应。所有与64 位 ROM序列不符的从片将等待复位脉冲。 此命令在总线上有单个或多个器件的情况下均可使用。 ·Skip ROM(“跳过”ROM) [CCh] 在单点总线系统中,此命令通过允许总线主机不提供 64 位 ROM 编码而访问存储器操作来节省时间。如果在总线上 存在多于一个的从属器件而且在 Skip ROM 命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据 冲突(漏极开路下拉会产生“线与”的效果)。 ·Search ROM(搜索 ROM)[F0h] 当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其 64 位 ROM 编码。搜索 ROM 命令允许 总线主机使用一种“消去”(elimination)处理来识别总线上所有从片的 64 位 ROM 编码。 ·Alarm Search(告警搜索) [ECh] 此命令的流程与搜索 ROM 命令相同。但是,仅在最近一次温度测量出现告警的情况下,DSl820 才对此命令作出响 应。告警的条件定义为温度高于 TH 或低于 TL。只要 DSl820 一上电,告警条件就保持在设置状态,直到另一次温度测量 显示出非告警值,或者改变 TH 或 TL 的设置使得测量值再一次位于允许的范围之内。贮存在 EEPROM 内的触发器值用于 告警。 ·ROM 搜索举例 ROM 搜索过程是简单三步过程的重复:读一位,读核位的补码(complement),然后写所需的那一位的值。总线主机 在 ROM 的每一位上完成这一简单的三步过程。在全部过程完成之后,总线主机便知道一个器件中 ROM 的内容。器件中 其余的数以及它们的 ROM 编码可以由另外一个过程来识别。 以下 ROM 搜索过程的例子假设四个不同的器件连接到同一条单线总线上。四个器件的 ROM 数据如下所示: ROMl 00110101. ROM2 10101010. ROM3 11110101. ROM4 00010001. 搜索过程如下: 1.总线主机通过发出复位脉冲开始初始化序列,从属器件通过发出同时的存在脉冲作出响应。 2.然后总线主机在单线总线上发出搜索 ROM 命令。 3.总线主机从单线过程中读一位。每一器件通过把它们各自。ROM 数据的第一位的值放到单线总线上来作出响应。 ROMl 和 ROM4:将把一个 0 放在单线总线上,即,把它拉至低电平。ROM2 和 3 通过使总线停留在高电平而把 1 放在单 线总线上。结果是线上所有器件的逻辑“与”,因此总线主机接收到一个 0。总线主机读另一位。因为搜索 ROM 数据命令