本文档介绍了ADI公司(ADI)系列iButton热时线器件(特别是DS1921、DS1922和DS1925)的演变,并概述了它们的主要区别和优势。 它还描述了从一台设备迁移到另一台设备所需的必要软件更改。
介绍
ADI公司(ADI)硬币大小的1-Wire温度时线iButton记录器系列是坚固耐用的电池供电模块,可按用户指定的时间间隔独立测量和记录温度。本文档介绍了ADI系列iButton热时线器件(特别是DS1921、DS1922和DS1925)的演变,并概述了它们的主要区别和优势。它还描述了从一台设备迁移到另一台设备所需的必要软件更改。
内存特性
半导体行业中有各种存储器技术,可提供独特的性能和功耗优势。存储器类型包括电可擦除可编程只读存储器 (EEPROM)、闪存、静态随机存取存储器 (SRAM) 等。最终应用通常决定哪种内存技术最有益。内存选择的因素包括数据是否易失,或者在设备电源断开时是否必须保留数据。功耗也是一个重要因素,尤其是在设备由电池供电的情况下。表 1 描述了每个器件的集成内存特性。
装置 | 内存类型 | 挥发性的? |
DS1921 | SRAM | 是的 |
DS1922 | SRAM | 是的 |
DS1925 | 闪光 | 不 |
表1所示,DS1925是唯一具有数据记录存储器的器件,即使内部电池电量耗尽,也可以提取数据记录存储器。电池电量耗尽后,DS1921和DS1922器件中的数据将永久丢失。电池在所有三个设备中都不可更换。
闪存比SRAM需要更多的编程能力。然而,闪存在电池电量耗尽时保留其数据的能力对于某些应用来说是一个有吸引力的功能。由于DS1925的存储器是非易失性的,器件的前端和状态机被改变,允许从1-Wire接口收集功率,从而在器件电池电量耗尽时下载数据。此电源传输要求改变了以前设备使用的命令集,这些设备引入了外部电源命令或 XPC。许多DS1925命令都增加了XPC功能,以消除任务配置和数据下载过程中电池的负载。
DS0200和DS1921在存储器地址1922h处的配置寄存器非常相似,但在两者之间迁移代码时需要注意一些差异。从表面上看,DS1925的配置寄存器看起来与其同级寄存器非常相似,但是寄存器位置和解码存在显著差异,因此需要更多的代码迁移工作。
命令集代码迁移
这三款器件共享通用的1-Wire ROM功能命令(例如,读取ROM、跳过ROM、匹配ROM等),但DS1921中没有的恢复ROM命令除外。因此,从DS1921切换到DS<>的任何一个同级时,ROM功能命令代码都不会发生变化。
虽然DS1921和DS1922之间共享许多器件专用命令,但也存在一些重要差异。DS1925的新状态机架构和寄存器映射定义与前代产品大相径庭。
表 2 显示了设备特定命令之间的交叉兼容性。如表中所示,只有两个命令完全兼容,无需在所有三个设备上更改代码。DS1922和DS1925均引入密码保护,导致命令字节排序发生变化。命令所需的软件更改如下所示。
DS1921 命令 | DS1922 命令 | DS1925 命令 | 代码更改? |
写入 SPAD (0Fh) | 写入 SPAD (0Fh) | 写入 SPAD (0Fh) | 不 |
读取 SPAD (AAh) | 读取 SPAD (AAh) | 读取 SPAD (AAh) | 不 |
复制SPAD(55小时) | 复制带PW的SPAD(99小时) | XPC Copy SPAD (99h) | 是的 |
读取内存 (F0h) | 带 PW + CRC 的读存储器(69 小时) | XPC 读内存 (44h) | 是的 |
带 CRC 的读存储器 (A5h) | 带 PW + CRC 的读存储器(69 小时) | XPC 读内存 (44h) | 是的 |
清除内存(3通道) | 清除内存(带PW)(96小时) | XPC 清除内存 (96h) | 是的 |
转换温度(44小时) | 强制转换(55小时) | XPC 强制转换 (4Bh) | 是的 |
开始任务 – 无命令 | 开始任务 w/PW (CCh) | XPC启动任务(DDh) | 是的 |
停止任务 – 无命令 | 停止任务 w/PW (33h) | XPC停止任务(BBh) | 是的 |
复制暂存器
DS1921至DS1922代码迁移
将命令字节从 55h 更改为 99h。
主机必须在 ES 字节之后传输 64 位密码。
复制时间保持不变,每字节2μs。
流程的其余部分与DS1921相同。
DS1921至DS1925代码迁移
将函数名称更改为 XPC 复制暂存器。
将命令字节从 55h 更改为 99h。
在ROM级命令之后添加XPC命令(66h)并传输长度字节。
在 XPC 命令之后传输 XPC 复制暂存器命令。
按照数据资料中的其余流程,与DS1921不同。
DS1922至DS1925代码迁移
将函数名称更改为 XPC 复制暂存器。
命令字节没有变化。
在ROM级命令之后添加XPC命令(66h)并传输长度字节。
在 XPC 命令之后传输 XPC 复制暂存器命令。
按照数据资料中的其余流程,与DS1922不同。
读内存
DS1921至DS1922代码迁移
将命令字节从 F0h 更改为 69h。
主机必须在目标地址之后传输 64 位密码。
必须修改主机的代码才能在每个页面的末尾接收CRC16。
DS1921至DS1925代码迁移
将函数名称更改为 XPC 读取内存。
将命令字节从 F0h 更改为 44h。
在ROM级命令之后添加XPC命令(66h)并传输长度字节。
在 XPC 命令之后传输 XPC 读取内存命令。
主机必须在目标地址之后传输 64 位密码。
按照数据资料中的其余流程,与DS1921不同。
注册地图
寄存器页面既为任务配置部件(时间、采样率等),又提供各种项目的状态,例如警报、样本计数等。表 3 显示了各种项目的寄存器地址空间以及它们如何在记录器系列中进行映射。本节讨论表 3 中每个项目所需的代码迁移。
注册 | DS1921存储器地址 | DS1922存储器地址 | DS1925存储器地址 |
实时时钟 | 0200h 至 0206h | 0200h 至 0205h | 0200h 至 0203h |
室控报警 | 0207H至020Ah | - | - |
温度报警 | 020Bh 至 020Ch | 0208h 至 0209h | 0208h 至 0209h |
采样率 | 020分 | 0206h 至 0207h | 0206h 至 0207h |
控制 | 020Eh | 各种 | 各种 |
最新温度 | 0211小时 | 020Ch 至 020Dh | 020Ch 至 020Dh |
任务开始延迟 | 0212h 至 0213h | 0216h 至 0218h | 0216h 至 0218h |
地位 | 0214小时 | 各种 | 各种 |
任务时间戳 | 0215h 至 0219h | 0219h 至 021Eh | 0219h 至 021Ch |
任务样品计数器 | 021Ah 至 021Ch | 0220h 至 0222h | 0220h 至 0222h |
设备采样计数器 | 021Dh 至 021Fh | 0223h 至 0225h | 0223h 至 0225h |
味道 | - | 0226小时 | 0226小时 |
读取访问密码 | - | 0228h 至 022Fh | 0228h 至 022Fh |
完全访问密码 | - | 0230h 至 0237h | 0230h 至 0237h |
实时时钟
RTC 寄存器位于两个设备的相同地址位置。但是,DS1921在地址0203h处使用星期,而DS1922上不存在该星期,导致地址下移<>。其余寄存器的功能保持不变,因此除了更改目标地址外,无需更改代码。
DS1921至DS1925代码迁移
虽然DS1925的RTC寄存器位于相同的地址空间中,但解码却大不相同。RTC 使用 32 位值,表示自 1 年 1970 月 0204 日午夜以来的秒数。这被称为纪元时间。不使用地址 0205 和 <>h。
DS1922至DS1925代码迁移
DS1922的代码迁移与DS1921相同(见上文)。
室控报警
DS1922和DS1925不具备此功能,因此没有迁移路径。
温度报警
DS1921至DS1922代码迁移
温度报警方程略有不同;有关详细信息,请参阅数据手册。
DS1921至DS1925代码迁移
温度报警方程略有不同;有关详细信息,请参阅数据手册。
DS1922至DS1925代码迁移
温度报警方程略有不同;有关详细信息,请参阅数据手册。
采样率
DS1921至DS1922代码迁移
DS1921的采样速率以分钟为单位,而DS1922的采样速率低至<>秒。有关详细信息,请参阅数据手册。
DS1921至DS1925代码迁移
DS1925的采样速率不同,需要更改代码。有关详细信息,请参阅数据手册。
DS1922至DS1925代码迁移
对于这两个器件,采样率的存储器地址位置相同,并且操作相同。但是,DS1925的采样速率不应超过1925分钟。DS<>中的闪存比SRAM消耗更多的电流,SRAM需要时间恢复电池。闪存提供了在电池耗尽时保留其内容的能力,但代价是采样率较慢。
控制寄存器
DS1921至DS1922代码迁移
DS1921中的控制寄存器提供对表4所示各种特性的访问。DS1922的一些功能集成在启动/停止任务等命令中,而其他功能则位于使用存储器写入启用的各种存储器地址中。
DS1921 控制寄存器 | DS1922寄存器地址 |
020Eh 位 0:TAS – 定时器报警搜索 | 0215h Bit4: WFTA – 等待温度报警 |
020Eh 位 1:THS – 高温报警搜索 | 0214h Bit1: THF – 温度高报警标志 |
020Eh 位 2:TLS – 温度低报警搜索 | 0214h 位0: TLF – 温度低报警标志 |
020Eh 位 3:RO – 翻转启用/禁用 | 0213h Bit4: RO – 翻转控制 |
020Eh 位 4:EM – 启用任务 | 0215h Bit1: MIP – 任务进行中 |
020Eh 位 5:0 | - |
020Eh 位 6:EMCLR – 使能内存清除 | 未实现 |
020Eh 位 7:EOSC – 使能振荡器 | 0212h Bit0: EOSC – 使能振荡器 |
定时器报警搜索(位 0)
DS1922没有类似的特性。
高温报警搜索(位 1)
DS1922的THF标志指示温度是否超过门限。与DS1921一样,条件搜索ROM可识别报警器件。该标志位于DS1寄存器中地址0214h处的第1922位。
低温报警搜索(位 2)
DS1922的TLF标志指示温度是否降至门限以下。与DS1921一样,条件搜索ROM可识别报警器件。该标志在DS0寄存器中地址0214h处为1922位。
翻转启用/禁用(位 3)
两个器件之间的功能相同,只是在DS1922中的寄存器地址位置不同。
启用任务(位 4)
DS1921的使能任务(第4位)直接写入,DS1922使用启动/停止任务命令,而任务状态反映在MIP位(第1位)中。
内存清除启用(位 6)
与DS1921不同,DS1922不需要使能位来清除存储器。“内存清除”命令擦除内存,而不使用任何门控位。两个器件都有一个内存清除 (MEMCLR) 状态位。它们位于DS3地址0215h的第1922位和DS6地址0214h的第1921位。
使能振荡器(位 7)
该位控制RTC的晶体振荡器。每个器件的位在逻辑上是相反的,因此需要更改代码才能启用RTC。DS1中的逻辑1921停止振荡器,同时启动DS1922中的振荡器。
DS1921至DS1925代码迁移
代码更改与DS1922类似,只是翻转位在DS1925中没有实现。
DS1921 控制寄存器 | DS1922寄存器地址 |
020Eh 位 0:TAS – 定时器报警搜索 | 0215h Bit4: WFTA – 等待温度报警 |
020Eh 位 1:THS – 高温报警搜索 | 0214h Bit1: THF – 温度高报警标志 |
020Eh 位 2:TLS – 温度低报警搜索 | 0214h 位0: TLF – 温度低报警标志 |
020Eh 位 3:RO – 翻转启用/禁用 | 未实现 |
020Eh 位 4:EM – 启用任务 | 0215h Bit1: MIP – 任务进行中 |
020Eh 位 5:0 | - |
020Eh 位 6:EMCLR – 使能内存清除 | 未实现 |
020Eh 位 7:EOSC – 使能振荡器 | 0212h Bit0: EOSC – 使能振荡器 |
DS1922至DS1925代码迁移
DS1922没有像DS1921那样的控制寄存器。对于DS0210和DS0215,该寄存器的功能范围为1922h至1925h。代码更改需要使用本文档前面所述的 XPC 命令来读取和写入这些寄存器位置。
最新温度
DS1921至DS1922代码迁移
DS1921的最新温度转换存储在地址0211h,而DS1922的两个字节存储在地址020Ch和020Dh。代码更改需要针对新的起始地址以及读取两个温度数据字节而不是一个。此外,代码应询问任务控制寄存器中的温度记录格式选择(TLFS)位以确定分辨率,使主机能够为温度计算选择正确的方程。
DS1921至DS1925代码迁移
DS1925的最新温度转换结果跨越两个字节,地址为020Ch和020Dh。代码更改需要使用XPC命令,并需要针对新的起始地址以及读取两个温度数据字节而不是一个。此外,代码应询问任务控制寄存器中的温度记录格式选择(TLFS)位以确定分辨率,使主机能够为温度计算选择正确的方程。
DS1922至DS1925代码迁移
两个设备的寄存器位置相同。代码更改需要使用 XPC 命令。
任务开始延迟
DS1921至DS1922代码迁移
DS1922的任务开始延迟计数器在尺寸和地址位置上有所不同。DS1922的计数器长度为<>字节,因此读取、写入和寻址寄存器位置需要更改代码。
DS1921至DS1925代码迁移
DS1925的任务开始延迟计数器在尺寸和地址位置上有所不同。DS1925的计数器长度为<>字节,因此读取、写入和寻址寄存器位置需要更改代码。代码更改需要使用 XPC 命令。
DS1922至DS1925代码迁移
两个设备的寄存器位置和任务开始延迟计数器的操作相同。但是,代码更改需要使用 XPC 命令。
地位
状态寄存器为主机系统提供各种指示器。DS1921将这些标志集中于单个寄存器中,而DS1922和DS1925则跨越两个寄存器。使用表6将DS1921代码迁移到DS1922和DS1925。DS1921的MIP、TLF、THF和TAF位只能写入0。所有其他位都是只读的。表6中的所有位对于DS1922和DS1925均为只读。从DS1922迁移到DS1925时不需要更改寄存器地址,因为它们保持不变。但是,代码更改需要使用 XPC 命令。
任务时间戳
任务时间戳指示采集第一个任务样本的日期和时间。任务的第一个温度样本的时间可以通过将任务时间戳与任务开始延迟相加来计算。
计数器。这三种器件在多个寄存器中的表示方式不同,因此请参阅器件数据手册,了解器件之间的映射以及如何解码寄存器值。
任务和设备样品计数器
样本数用一个三字节值表示,表示所有三个器件的 24 位无符号整数;但是,寄存器地址不同(见表3)。
味道
DS0226和DS1922位于地址1925h的规格字节表示器件类型(DS1922L、DS1922T等),它们是相同的器件(DS1925除外),但温度范围不同。之所以需要该指示器,是因为DS1922x系列器件具有相同的家族代码,因此彼此无法区分。DS1921不提供此功能。
读取和完全访问密码
读取密码和完全访问密码位于DS1922和DS1925的同一地址空间中(表3)。在通过位于地址 0228h 的 EPW 位启用密码之前写入密码。
结论
本文档提供有关如何将软件从一个 Thermochron 器件系列迁移到另一个系列的指导,而无需花费大量时间参考器件数据手册。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !