1、 D D S S 1 1 8 8 2 2 0 0中文资料 电子驿站 http:/ E-mail: DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 451338524 476485321 1 一、概述 1.1 一般说明 DSl820数字温度计提供 9位温度读数,指示器件的温度。 信息经过单线接口送入 DSl820或从 DSl820送出,因此从中央处理器到 DSl820仅需连接一条线(和地)。读、写和完 成温度变换所需的电源可以由数据线本身提供,而不需要外部电源。 因为每一个 DSl820有唯一的系列号(
2、 silicon serial number),因此多个 DSl820可以存在于同一条单线总线上。这允许 在许多不同的地方放置温度灵敏器件。此特性的应用范围包 括 HVAC环境控制 , 建筑物 、 设备 或 机械内 的温度 检测 ,以 及 过 程监视 和 控制 中的温度 检测 。 1.2 特性 独 特的单线接口, 只 需 1个接口 引脚即 可 通 信 多 点 ( multidrop) 能力使分布式 温度 检测 应用 得 以 简化 不需要外部 元 件 可用数据线供电 不需 备份 电源 测量 范围从 -55至 +125 , 增量值 为 0.5 。 等效 的 华氏 温度范围 是 -67至 257 ,
3、 增量值 为 0.9 以 9位数字 值 方 式 读出温度 在 1秒 ( 典型值 ) 内把 温度变换为数字 用 户 可 定义 的, 非易失 性的温度 告警设 置 告警搜索命令识别 和 寻址 温度在 编定 的 极限之 外的器件(温度 告警情况 ) 应用范围包 括恒 温 控制 , 工业 系 统 , 消费类产品 ,温度计或 任何热 敏系 统 1.3 引脚排列 引脚说明 GND 地 DQ 数字 输 入 输 出 VDD可 选 的 V DDNC 空引脚 DNC 不连接 DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 4
4、51338524 476485321 2 1.4 详细的引脚说明 引 脚 8脚 SOIC 引 脚 PR35 符 号 说 明 5 1 GND 地 4 2 DQ 单线应用的数据 输 入 输 出 引脚 : 漏极开 路见“寄生 电源 ” 一 节 3 3 V DD可 选 V DD 引脚 ,有 关 连接的 细节见“寄生 电源 ” 一 节 二、详细说明 2.1 综述 图 1的方 框图表 示 DSl820的 主 要部件。 DSl820有 三 个 主 要的数据部件: 1) 64位 激光 ( lasered) ROM; 2)温度灵敏 元 件 ; 3) 非易失 性温度 告警 触发 器 TH和 TL。器件从单线的 通
5、 信线 取 得 其 电源,在信号线为 高 电 平 的 时间周期 内 , 把能 量 贮 存在 内 部的电 容 器中,在单信号线为 低 电 平 的 时间期 内 断 开 此电源, 直 到信号线变为 高 电 平重新 接上 寄生 (电 容 )电 源为 止 , 作 为 另 一 种 可供 选 择 的方 法 , DSl820也 可用外部 5V电源供电。 DS1820 BLOCK DIAGRAM Figure 1 图 1 DSl820方框图 与 DSl820的 通 信经过一个单线接口。在单线接口 情况 下 ,在 ROM操作未 定建 立 之 前 不 能使 用存 贮 器和 控制 操作 。 主 机 必须首先 提供 五
6、种 ROM操作 命令之 一: 1) Read ROM(读 ROM); 2) Match ROM( 符 合 ROM); 3) Search ROM( 搜 索 ROM) ; 4) Skip ROM( 跳 过 ROM) ; 5) Alarm Search( 告警搜索 )。这 些 命令 对 每一器件的 64位 激光 ROM部 分 进行 操作 。 如果 在单线上有许多器件, 那么 可以 挑 选 出一个特 定 的器件, 并给 总线上的 主 机 指示存在多 少 器件 及 其 类型 。在成 功 地 执行了 ROM操作序 列 之 后 ,可 使 用存 贮 器和 控制 操作 , 然后主 机 可以提供 六种 存 贮
7、器和 控制 操作 命令之 一。 一个 控制 操作 命令 指示 DSl820完成温度 测量 。 该 测量 的 结果将 放入 DSl820的 高速暂 存( 便笺 式 )存 贮 器( Scratchpad memory), 通 过 发 出读 暂 存存 储 器 内 容 的存 储 器 操作 命令 可以读出此 结果 。每一温度 告警 触发 器 TH和 孔构 成一个字 节 的 EEPROM。 如果 不 对 DSl820施加 告警搜索命令 ,这 些寄 存器可用 作 通 用用 户 存 储 器。 使 用存 储 器 操作 命令 可以写 TH和 TL。 对 这 些寄 存器的读 访问 通 过 便笺 存 储 器。所有数据
8、 均 以 最低 有 效 位在 前 的方 式 被 读写。 2.2 寄生电源( parasite power) 方 框图 ( 图 1)示出 寄生 电源电 路 。 当 I 0或 V DD 引脚 为 高 电 平时 ,这个电 路便“取” 得 电源。 只 要 符 合 指 定 的 定 时 和电 压 要 求 , I O将 提供 足够 的 功率 ( 标题 为 “ 单总线系 统 ” 一 节 )。 寄生 电源的 优 点是 双 重 的: 1) 利 用此 引脚 , 远 程 温 度 检测 无 需本地电源, 2) 缺 少 正常 电源条件 下也 可以读 ROM。 为 了 使 DSl820能 完成 准确 的温度变换, 当 温度
9、变换 发生时 , I 0线上 必须 提供 足够 的 功率 。因为 DSl820的 工 作 电 流 高 达 1mA, 5k 的上 拉 电 阻 将 使 I 0线 没 有 足够 的 驱动 能力 。 如果 几 个 DSl820在同一条 I 0线上而 且企 图 同 时 变换, DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 451338524 476485321 3 那么 这一 问 题 将 变 得 特 别 尖锐 。 有 两 种 方 法 确保 DSl820在 其 有 效 变换 期 内得 到 足够 的电源电 流 。 第
10、 一 种 方 法 是 发生 温度变换 时 ,在 I 0线上提供一 强 的上 拉 。 如图 2所示, 通 过 使 用一个 MOSFET把 I 0线 直 接 拉 到电源可 达 到这一 点 。 当 使 用 寄生 电源方 式 时 V DD 引脚 必须 连接到地。 向 DSl820供电的 另 外一 种 方 法 是通 过 使 用连接到 V DD 引脚 的外部电源, 如图 3所示。这 种 方 法 的 优 点是 在 I 0线上 不要 求 强 的上 拉 。总线上 主 机 不需 向 上连接 便 在温度变换 期间 使 线 保持 高 电 平 。这 就 允许在变换 时间 内 其 它 数据在单线上 传 送。此外,在单线总
11、线上可以放置 任何 数 目 的 DSl820,而 且 如果 它们都 使 用外部电源, 那么 通 过 发 出 跳 过( Skip) ROM 命令 和接 着 发 出变换( Convert) T命令 ,可以同 时 完成温度变换。 注意 只 要外部电源处于 工 作 状态 , GND(地) 引脚 不可 悬 空 。 图 2 强上拉在温度变换期内向 DSl820供电 在总线上 主 机 不 知道 总线上 DSl820是 寄生 电源供电 还 是 外部 V DD 供电的 情况 下 ,在 DSl820内 采 取了 措 施 来 通 知采 用 的供电方 案 。总线上 主 机通 过 发 出 跳 过( Skip) ROM
12、的 操作 约 定 , 然后发 出读电源 命令 ,可以 决 定是 否 有需要 强 上 拉 的 DSl820在总线上。在此 命令 发 出 后 , 主 机 接 着 发 出读 时间 片 。 如果 是 寄生 供电, DSl820将 在单线总线上送 回 “ 0”;如果 由 V DD 脚 供电, 它 将 送 回 “ 1”。 如果主 机 接 收 到一个 “ 0”, 它知道它 必须 在温度变换 期间 在 I 0线上供一个 强 的上 拉 。 有 关 此 命令 约 定 的 详 细 说明 , 见“ 存 贮 器 命令 功 能 ” 一 节 。 2.3 运用 测量温度 DSl820通 过 使 用在 板 ( on-board
13、)温度 测量 专利技术来 测量 温度。温度 测量 电 路 的方 框图见图 4所示。 图 3 使用 V DD 供温度变换所需电流 DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 451338524 476485321 4图 4 温度测量电路 DSl820通 过 门 开通 期间 内 低 温度系数 振荡 器经 历 的 时 钟 周期 个数计数 来 测量 温度,而 门 开通 期 由 高 温度系数 振荡 器 决 定 。计数器 予 置 对 应于 -55 的 基 数, 如果 在 门 开通 期结 束 前 计数器 达 到 零
14、 , 那么 温度 寄 存器 也被 予 置到 -55 的数 值增量 , 指示温度 高 于 -55 。 同 时 ,计数器用 斜 率 累 加 器电 路 所 决 定 的 值 进行 予 置。为 了对 遵循抛 物 线 规律 的 振荡 器温度特性 进行 补偿 ,这 种 电 路 是 必 需的。 时 钟再次 使 计数器计 值至 它达 到 零 。 如果 门 开通 时间 仍 未结 束 , 那么 此过 程 再次 重 复 。 斜 率 累 加 器用于 补偿振荡 器温度特性的 非 线性,以 产 生高 分 辩 率 的温度 测量 。 通 过 改 变温度每 升 高 一度,计数器 必须 经 历 的计数个数 来实 行 补偿 。因此,
15、为 了 获 得 所需的 分 辩 率 ,计数器的数 值 以 及 在 给 定 温度处每一 摄 氏 度的计数个数( 斜 率 累 加 器的 值 ) 二者都 必须 知道 。 此计 算 在 DSl820内 部完成以提供 0.5 的 分 辩 率 。温度读数以 16位、 符 号 扩展 的 二 进 制 补码 读数 形 式 提供。 表 l说明 输 出数据 对 测量 温度的 关 系。数据在单线接口上 串 行发 送。 DSl820可以以 0.5 的 增量值 ,在 0.5至 +125 的范围 内测量 温度。 对 于应用 华氏 温度的 场 合 , 必须 使 用 查找 表 或变换系数。 注意 ,在 DSl820中,温度 是
16、 以 1 2 LSB( 最低 有 效 位) 形 式 表 示 时 , 产 生 以 下 9位 格 式 : MSB( 最高 有 效 位) ( 最低 有 效 位) LSB 最高 有 效 ( 符 号)位 被 复 制 到存 储 器 内 两 字 节 的温度 寄 存器中 较 高 MSB的所有位,这 种“ 符 号 扩展 ” 产 生了如表 1所示 的 16位温度读数。 以 下 的过 程 可以 获 得 较 高 的 分 辩 率 。 首先 ,读温度, 并 从读 得 的 值 截去 0.5 位( 最低 有 效 位)。这个 值 便 是 TEMP_READ。 然后 可以读 留 在计数器 内 的 值 。此 值是 门 开通 期 停
17、 止 之 后 计数 剩余 TEMPRATURE(温度) =TEMP_READ-0.25+ C PER COUNT REMAIN COUNT C PER COUNT _ _ _ _ _ ) ( - DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 451338524 476485321 5( COUNT_REMAIN)。所需的 最后 一个数 值是 在 该 温度处每一 摄 氏 度的计数个数( COUNT_PER_C)。于 是 ,用 户 可以 使 用 下 式 计 算实 际 温度: 表 1 温度数据关系 温度 数字
18、 输 出( 二 进 制 ) 数字 输 出( 十 六进 制 ) +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内 的 触发 值 相比较 。因为这 些寄 存
19、器仅仅 是 8位,所以 0.5 位在 比较 时被 忽略 。 TH或 TL的 最高 有 较 位 直 接 对 应于 16位温度 寄 存器的 符 号位。 如果 温度 测量 的 结果高 于 TH或 低 于 TL, 那么 器件 内告警 标 志 将 置位。每 次 温度 测量 更 新 此 标 志 。 只 要 告警 标 志 置位, DSl820将对 告警搜索命令 作 出 响 应。 这允许 并 联 连接许多 DSl820,同 时进行 温度 测量 。 如果 某 处温度 超 过 极限 , 那么 可以 识别 出 正 在 告警 的器件 并立 即 将其 读 出而不 必 读出 非告警 的器件。 2.5 64位激光 ROM
20、每一 DSl820包 括 一个唯一的 64位 长 的 ROM编 码 。 开 绐 的 8位 是 单线 产品 系列 编 码 ( DSl820编 码 是 10h)。接 着 的 48位 是 唯一的系列号。 最后 的 8位 是开 始 56位 CRC( 见图 5)。 64位 ROM和 ROM操作 控制 部 分 允许 DSl820作 为一个 单线器件 工 作并 遵循 “ 单线总线系 统 ” 一 节 中所 详 述 的单线 协议 。 直 到 ROM操作 协议 被 满 足 , DSl820控制 部 分 的 功 能是 不可 访问 的。此 协议 在 ROM操作 协议 流 程 图 ( 图 6)中 叙述 。单线总线 主
21、机 必须首先操作五种 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
22、 ( 最高 有 效 位) ( 最低 有 效 位) DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 451338524 476485321 6 图 6 ROM操作流程图 2.6 CRC产生 DSl820有一存 贮 在 64位 ROM的 最高 有 效 字 节 内 的 8位 CRC。总线上的 主 机 可以 根 据 64位 ROM的 前 56位计 算 机 CRC的 值 并 把 它 与 存 贮 在 DSl820内 的 值 进行 比较 以 决 定 ROM的数据 是 否 已 被主 机 正确 地接 收 。 CRC的 等效
23、 多 项 式 函 数 为: CRC=X 8 +X 5 +X 4 +1 DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 451338524 476485321 7 DSl820也 利 用 与 上 述相 同的多 项 式 函 数 产 生 一个 8位 CRC值 并 把 此 值 提供 给 总线的 主 机 以 确 认 数据字 节 的 传 送。在 使 用 CRC来确 认 数据 传 送的每一 种 情况 中,总线 主 机 必须 使 用上 面 给 出的多 项 式 函 数计 算 CRC的 值 并 把 计 算 所 得 的 值 或
24、 者 与 存 贮 在 DSl820的 64位 ROM部 分 中的 8位 CRC值 ( ROM读数),或 者 与 DSl820中计 算 得 到的 8位 CRC值 (在读 暂 存存 贮 器中 时 , 它 作 为 第 九 个字 节被 读出), 进行 比较 。 CRC值 的 比较 和 是 否 继续 操作 都 由总线 主 机 来决 定 。 当 存 贮 在 DSl820内 或由 DSl820计 算 得 到的 CRC值 与 总线 主 机产 生 的 值 不 相 符 合时 ,在 DSl820内 没 有电 路 来阻 止 命令 序 列的 继续 执行 。 总线 CRC可以 使 用 如图 7所示由一个 移 位 寄 存器
25、和 “ 异 或 ”( XOR) 门 组 成的多 项 式产 生 器 来 产 生 。 其 它 有 关 Dallas 公司 单线 循 环 冗余校验 的信息可 参 见 标题 为 “ 理 解 和 使 用 Dallas半导体公司 接 触 式 存 贮 器 产品 ” 的应用 注 释 。 移 位 寄 存器的所有位 被 初始 化 为 零 。 然后 从 产品 系列 编 码 的 最低 有 效 位 开 始 ,每 次 移 入一位。 当 产品 系列 编 码 的 8位 移 入以 后 ,接 着 移 入 序 列号。在 序 列号的 第 48位 进 入 之 后 , 移 位 寄 存器 便 包 含 了 CRC值 。 移 入 CRC的 8
26、位应 该 使 移 位 寄 存器 返 回 至 全 零 。 图 7 单线 CRC编码 2.7存贮器 DSl820的存 贮 器 如图 所示 那 样 被 组织 。存 贮 器由一个 高速暂 存( 便笺 式 ) RAM和一个 非易失 性,电可 擦除 ( E 2 ) RAM 组 成, 后 者 存 贮高 温度和 低 温度和 触发 器 TH和 TL。 暂 存存 贮 器有 助 于在单线 通 信 时 确保 数据的完 整 性。数据 首先 写入 暂 存存 贮 器,在 那 里 它 可以 被 读 回 。 当 数据 被 校验 之 后 , 复 制 暂 存存 贮 器的 命令把 数据 传 送到 非易失 性( E 2 ) RAM。这
27、一过 程 确保 了 更 改 存 贮 器 时 数据的完 整 性。 暂存器 字节 E 2 RAM 温度 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 DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 451338524 476485321 8 暂 存存 贮 器 是 按 8位字 节 存 储 器
28、 来 组织 的。 头 两 个字 节 包 含 测得 温度信息。 第 三 和 第 四 个字 节 是 TH和 TL的 易失 性 拷贝 ,在每一 次 上电 复 位 时被 刷 新 。接 着 的 两 个字 节 没 有 使 用, 但 是 在读 回 时 , 它们 呈现 为 逻辑全 1。 第 七 和 第 八 个字 节 是 计数 寄 存器, 它们 可用于 获 得 较 高 的温度 分 辨 率 ( 见“ 运 用一 测量 温度 ” 一 节 )。 还 有 第 九 个字 节 , 它 可用 Read Scratchpad(读 暂 存存 贮 器) 命令 读出。 该 字 节 包 含 一个 循 环 冗余校验 ( CRC)字 节 ,
29、 它 是 前 面 所有 8个字 节 的 CRC值 。此 CRC值 以 “ CRC产 生” 一 节 中所 述 的方 式产 生 。 2.8 单线总线系统 单线总线 是 一 种 具 有一个总线 主 机 和一个或 若干 个从 机 (从 属 器件)的系 统 。 DSl820起 从 机 的 作 用。这 种 总线系 统 的 讨论 分 为 三 个 题目 : 硬 件接 法 ,处理 顺 序 ,以 及 单线信号(信号 类型 与 定 时 )。 2.8.1 硬件接法 根 据 定义 ,单线总线 只 有一 根 线:这一 点是 重 要的, 即 线上的 第 一个器件 能 在 适 当 的 时间 驱动 该 总线。为 了 做 到这一
30、 点 , 第 一个连接到单线总线上的器件 必须 具 有 漏极开 路 或 三 态 输 出。 DSl820的单线接口( I O引脚是漏极开 路 的, 其 内 部 等效 电 路如图 9所示)。多 站 ( multidrop)总线由单线总线和多个 与 之 相 连的从 属 器件 组 成。单线总线要 求 近 似 等 于 5k 的上 拉 电 阻 。 单线总线的 空 闲 状态 是 高 电 平 。不 管 任何 原 因, 如果执行 需要 被 挂 起 , 那么 , 若 要 重新 恢 复 执行 ,总线 必须 保持 在 空 闲 状态 。 如果 不 满 足 这一 点 且 总线 保持 在 低 电 平时问 大 于 480us
31、, 那么 总线上所有器件 均被 复 位。 存在 脉冲 ( presence pulse) 使 总线 主 机 知道 DSl820在总线上 并 已 准 备 好 工 作 。 详 情 见“ 单线信号 ” 一 节 。 图 9 硬件接法 2.8.2 处理顺序 经过单线接口 访问 DSl820的 协议 ( protocol) 如下 : 初始 化 ROM操作 命令 存 贮 器 操作 命令 处理 数据 2.8.2.1 初始化 单线总线上的所有处理 均 从 初始 化 序 列 开 始 。 初始 化 序 列包 括 总线 主 机 发 出一 复 位 脉冲 ,接 着 由从 属 器件送出存在 脉 冲 。 2.8.2.2 RO
32、M操作命令 一 旦 总线 主 机检测 到从 属 器件的存在, 它 便 可以 发 出器件 ROM操作 命令之 一。所有 ROM操作 命令 均 为 8位 长 。这 DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 451338524 476485321 9 些 命令 列 表如下 ( 参 见图 6的 流 程 图 ): Read ROM(读 ROM) 33h 此 命令 允许总线 主 机 读 DSl820的 8位 产品 系列 编 码 ,唯一的 48位 序 列号,以 及 8位的 CRC。此 命令只能 在总线上 仅有一个
33、 DSl820的 情况 下 可以 使 用。 如果 总线上存在多于一个的从 属 器件, 那么当 所有从 片企 图 同 时发 送 时将发生 数据 冲突 的 现 象 ( 漏极开 路 会 产 生“ 线 与” 的 结果 )。 Match ROM( “符合” ROM) 55h “ 符 合” ROM命令 。 后 继 以 64位的 ROM数据 序 列,允许总线 主 机 对 多 点 总线上特 定 的 DSl820寻址 。 只 有 与 64位 ROM序 列 严 格相 符 的 DSl820才 能 对后 继 的存 贮 器 操作 命令 作 出 响 应。所有 与 64位 ROM序 列不 符 的从 片 将 等 待 复 位
34、脉冲 。 此 命令 在总线上有单个或多个器件的 情况 下均 可 使 用。 Skip ROM( “跳过” ROM) CCh 在单 点 总线系 统 中,此 命令通 过允许总线 主 机 不提供 64位 ROM编 码 而 访问 存 储 器 操作 来 节 省 时间 。 如果 在总线上 存在多于一个的从 属 器件而 且 在 Skip ROM命令之 后发 出读 命令 , 那么 由于多个从 片 同 时发 送数据, 会 在总线上 发生 数据 冲突 ( 漏极开 路下 拉 会 产 生“ 线 与” 的 效 果 )。 Search ROM( 搜索 ROM) F0h 当 系 统开 始 工 作时 ,总线 主 机 可 能 不
35、 知道 单线总线上的器件个数或 者 不 知道 其 64位 ROM编 码 。 搜索 ROM命令 允许 总线 主 机使 用一 种“ 消 去 ”( elimination)处理 来 识别 总线上所有从 片 的 64位 ROM编 码 。 Alarm Search(告警 搜索 ) ECh 此 命令 的 流 程 与 搜索 ROM命令 相 同。 但 是 ,仅在 最 近 一 次 温度 测量 出 现 告警 的 情况 下 , DSl820才 对 此 命令 作 出 响 应。 告警 的条件 定义 为温度 高 于 TH或 低 于 TL。 只 要 DSl820一上电, 告警 条件 就保持 在 设 置 状态 , 直 到 另
36、 一 次 温度 测量 显 示出 非告警值 ,或 者改 变 TH或 TL的 设 置 使得测量值 再 一 次 位于允许的范围 之内 。 贮 存在 EEPROM内 的 触发 器 值 用于 告警 。 ROM搜索举例 ROM搜索 过 程是简 单 三 步 过 程 的 重 复 :读一位,读 核 位的 补码 ( complement), 然后 写所需的 那 一位的 值 。总线 主 机 在 ROM的每一位上完成这一 简 单的 三 步 过 程 。在 全 部过 程 完成 之 后 ,总线 主 机 便 知道 一个器件中 ROM的 内 容 。器件中 其 余 的数以 及 它们 的 ROM编 码 可以由 另 外一个过 程 来
37、 识别 。 以 下 ROM搜索 过 程 的 例子假 设 四 个不同的器件连接到同一条单线总线上。 四 个器件的 ROM数据 如下 所示: ROMl 00110101 ROM2 10101010 ROM3 11110101 ROM4 00010001 搜索过 程 如下 : 1 总线 主 机通 过 发 出 复 位 脉冲 开 始初始 化 序 列,从 属 器件 通 过 发 出同 时 的存在 脉冲 作 出 响 应。 2 然后 总线 主 机 在单线总线上 发 出 搜索 ROM命令 。 3 总线 主 机 从单线过 程 中读一位。每一器件 通 过 把 它们 各自 。 ROM数据的 第 一位的 值 放到单线总线
38、上 来 作 出 响 应。 ROMl和 ROM4: 将 把 一个 0放在单线总线上, 即 , 把 它拉 至 低 电 平 。 ROM2和 3通 过 使 总线 停留 在 高 电 平 而 把 1放在单 线总线上。 结果 是 线上所有器件的 逻辑 “与” ,因此总线 主 机 接 收 到一个 0。总线 主 机 读 另 一位。因为 搜索 ROM数据 命令 DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 451338524 476485321 10 正 在 执行 ,所以单线总线上所有器件 通 过 把 它 各自 ROM 数
39、据 第 一位的 补码 放到单线总线上 来 对 这 第二 个读 作 出 响 应。 ROMl和 ROM4把 1放在单总线上, 使之 处于 高 电 平 。 ROM2和 ROM3把 0放在单线上,因此 它 将被 拉 至 低 电 平 。 对 于 第 一个 ROM数据位的 补码 总线 主 机 观察 到的 仍 是 一个 0。总线 主 机 便 可 决 定 在单线总线上有一 些 第 一位为 0的器件和一 些 第 一位为 1的器件。 从 三 步 过 程 的 两次 读中可 获 得 的数据 具 有以 下 的 解释 : 00 有器件连接 着 ,在此数据位上 它们 的 值 发生 冲突 。 01 有器件连接 着 ,在此数据
40、位上 它们 的 值 均 为 0。 10 有器件连接 着 ,在此数据位上 它们 的 值 均 为 1。 11 没 有器件 与 单线总线 相 连。 4 总线 主 机 写一个 0。在这 次 搜索 过 程 的 其 余 部 分 , 将 不 选 择 ROM2和 ROM3,仅 留 下 连接到单线总线的 ROMl和 ROM4。 5 总线 主 机 再 执行 两次 读, 并 在一个 l位 之 后 接 收 到一个 0位,这 表 示所有 还 连接在总线上的器件的 第二 个 ROM数 据位为 0。 6 总线 主 机 接 着 写一个 0, 使 ROMl和 ROM4二者 继续 保持 连接。 7 总线 主 机 执行 两次 读,
41、 并 接 收 到 两次 0数据位。这 表 示连接 着 的器件的 ROM数据的 第 三 位 都 是 1数据位和 0数 据位。 8 总线 主 机 写一个 0数据位。这 将 不 选 择 ROMl而 把 ROM4作 为唯一 仍 连接 着 的器件 加 以 保 留 。 9 总线 主 机 读 ROM4的 ROM数据位的 剩余 部 分 ,而 且 访问 需要的部件。这 就 完成 了 第 一个过 程 并 且 唯一地 识别 出 单线总线上的部件。 10 总线 主 机通 过 重 复 步骤 1至 7开 始 一个 新 的 ROM搜索 序 列。 11 总线 主 机 写一个 1。这 将 不 与 ROM4发生 联 系,而唯一地
42、 与 ROMl仍保持着 联 系。 12 总线 主 机 对 于 ROMl读出 ROM位的 剩余 部 分 而 且 , 如果 需要的 话 , 与 内 部 逻辑 通 信。这 就 完成 了 第二 个 ROM 搜索 过 程 ,在 其 中 ROM中的 另 一个 被 找 到。 13 总线 主 机通 过 重 复 步骤 1至 3开 始 一 次 新 的 ROM搜索 。 14 总线 主 机 写一个 1数据位。这 使得 在这一 搜索 过 程 的 其 余 部 分 不 选 择 ROMl和 ROM4,仅 留 下 ROM2和 ROM3 与 系 统 相 连接。 15 总线 主 机 执行 两 个读 时间 片 并 接 收 到 两 个
43、 零 。 16 总线 主 机 写一个 0数据位。这 去 掉 ROM3,仅 留 下 ROM2。 17 总线 主 机 对 于 ROM2读出: ROM数据位的 剩余 部 分 ,而 且 若 有需要 便与 内 部 逻辑 通 信。这完成 了 第 三 个 ROM 搜索 过 程 ,在此过 程 中 找 到 另 一个 ROM。 18 总线 主 机通 过 重 复 步骤 13至 15开 始 一 次 新 的 ROM搜索 。 19 总线 主 机 写一个 l数据位。这 去 掉 ROM2,仅 留 下 ROM3。 20 总线 主 机 读出 ROM3数据位的 剩余 部 分 ,而 且 若 有需要 就 与 内 部 逻辑 通 信。这
44、样 便 完成 了 第 4个 ROM搜索 过 程 , 在这过 程 中 找 到 了另 一个 ROM。 注意下 述内 容 : 在 第 一 次 ROM搜索 过 程 中,总线 主 机 知道 一个单线器件的唯一的 ID( 识别 )号( ROM数据 样 本)。 取 得 部件唯一 ROM编 码 的 时间 为: 960us+( 8+3 64) 6lus=13.16mS 因此总线 主 机 每 秒 钟 能 够 识别 75个不同的单线器件。 DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 451338524 476485321
45、11 2.8.3 I 0信号 DSl820要 求 严 格 的 协 定 ( protocols) 来确保 数据的完 整 性。 协议 由 几 种 单线上信号 类别型 组 成: 复 位 脉冲 ,存在 脉冲 , 写 0,写 1,读 0,和读 1。所有这 些 信号, 除 了 存在 脉冲 之 外, 均 由总线 主 机产 生 。 开 始 与 DSl820的 任何通 信所需的 初始 化 序 列和 图 11所示。 后 继 以存在 脉冲 的 复 位 脉冲 表 示 DS 1 820已 经 准 备 好 发 送或接 收 给 出 正确 的 ROM命令 和存 贮 器 操作 命令 的数据。 总线 主 机 发 送( TX)一
46、复 位 脉冲 ( 最 短 为 480uS的 低 电 平 信号)。接 着 总线 主 机 便 释 放此线 并进 入接 收 方 式 ( Rx)。 单线总线经过 5k 的上 拉 电 阻 被 拉 至 高 电 平 状态 。在 检测 到 I 0引脚 上的上 升 沿 之 后 , DSl820等 待 15.60uS并 且 接 着 发 送存在 脉冲 ( 60-240uS的 低 电 平 信号。) DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 451338524 476485321 12 2.8.3.1 存贮器操作命令 表 2和 图 10的 流 程 图给 出 下 述 命令 约 定 的 摘 要。 图 10 存贮器操作流程图 DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 451338524 476485321 13图 10 存贮器操作流程图( 续 ) DS18B20单总线数字温度计 电子驿站 更多的单片机资料、源程序及单片机教程请登陆网站下载! http:/ E-mail: QQ: 451338524 476485321 14图 10 存贮器操作流程图( 续 ) 图 11 初始化 过 程 “复 位 和 存在 脉冲”