DS2431是一款1024位的1-Wire® EEPROM芯片,以每个256位的四个内存页面组织。数据被写入8字节的暂存区,经过验证,然后复制到EEPROM存储器中。作为一个特殊功能,四个内存页面可以单独地被写保护,或者被置于EPROM仿真模式,其中位只能从1更改为0。DS2431通过单导线1-Wire总线进行通信。通信遵循标准的1-Wire协议。每个设备都有自己不可更改的独特的64位ROM注册号,这个号码在芯片上由工厂激光刻写。
优势与特点:
● 轻松为任何个体系统添加可追溯性和相关信息
- 1024位的EEPROM存储器,分为四个256位的页面
- 可以单独对每个内存页面进行永久写保护,或置于EPROM仿真模式(写为0)
- 切换点滞后和滤波以在噪声存在的情况下优化性能
● 简约的1-Wire接口降低成本和接口复杂性
- IEC 1000-4-2 Level 4 静电放电保护(±8kV 接触,±15kV 空气,典型值)
- 在从 -40°C 到 +85°C 的广泛电压范围内读写
- 通过单一数字信号以15.4kbps或125kbps与主机通信
DS2431将1024位的EEPROM、一个带有最多7个用户读/写字节的8字节寄存器/控制页,以及一个功能齐全的1-Wire接口融合在单个芯片中。每个DS2431都有自己的64位ROM注册号,由工厂激光刻写到芯片中,以提供绝对可追溯性的确保唯一身份。数据通过1-Wire协议进行串行传输,仅需要一个数据引脚和一个地线返回。DS2431还有一个额外的内存区域,称为暂存区,用作在写入主存储器或寄存器页时的缓冲区。数据首先写入暂存区,然后可以读取回来。在数据经过验证后,复制暂存区命令将数据传输到其最终的存储位置。DS2431的应用包括附件/PCB识别、医疗传感器校准数据存储、模拟传感器校准,包括IEEE P1451.4智能传感器,墨盒和硒鼓打印机识别,以及后市场耗材管理。
1-Wire协议的分层结构如图2所示。总线主机首先必须提供七种ROM功能命令之一:读取ROM、匹配ROM、搜索ROM、跳过ROM、恢复、过载-跳过ROM或过载-匹配ROM。在以标准速度执行完成过载-跳过ROM或过载-匹配ROM命令字节后,设备进入过载模式,随后的所有通信都以更高的速度进行。这些ROM功能命令所需的协议在图9中描述。成功执行ROM功能命令后,内存功能变得可访问,主机可以提供其中任何一个四种内存功能命令之一。这些内存功能命令的协议在图7中描述。所有数据都是以最低有效位优先进行读取和写入。
64位激光刻写的ROM:每个DS2431包含一个64位长的唯一ROM代码。前8位是1-Wire家族代码。接下来的48位是唯一的序列号。最后8位是前56位的循环冗余校验(CRC)。详细信息请参见图3。1-Wire CRC使用一个移位寄存器和异或门组成的多项式生成器生成,如图4所示。多项式为X8 + X5 + X4 + 1。
移位寄存器位初始化为0。然后,从家族代码的最低有效位开始,一次将一个位进行移位。在输入完家族代码的第8位后,输入序列号。在输入完序列号的最后一位后,移位寄存器包含CRC值。将CRC的8位进行移位会将移位寄存器恢复为全部为0。
内存访问:数据内存和寄存器位于线性地址空间中,如图5所示。数据内存和寄存器具有无限制的读取访问权限。DS2431的EEPROM数组由18行,每行8字节组成。
前16行平均分成四个内存页面(每个32字节)。这四个页面是主要的数据内存。每个页面可以通过在寄存器行中设置相关的保护字节,单独设置为开放(未受保护)、写保护或EPROM模式。作为出厂默认设置,整个数据内存是未受保护的,其内容是未定义的。最后两行包含保护寄存器和保留字节。寄存器行包括4个保护控制字节、一个复制保护字节、一个工厂字节和2个用户字节/制造商ID字节。制造商ID可以是客户提供的标识代码,有助于应用软件识别与DS2431相关的产品。
请与工厂联系以设置和注册自定义制造商ID。最后一行保留供将来使用。在读/写功能方面,它是未定义的,不应使用。
除了主EEPROM数组外,还包括8字节的易失性暂存区。对EEPROM数组的写操作是一个两步过程。首先,数据被写入暂存区,然后复制到主数组中。这允许用户在复制到主数组之前先验证写入暂存区的数据。设备仅支持完整行(8字节)的复制操作。为了使暂存区中的数据对复制操作有效,使用写暂存区命令提供的地址必须从行边界开始,并且必须将8个完整字节写入暂存区。
保护控制寄存器确定在写暂存区命令中的传入数据如何加载到暂存区。保护设置为55h(写保护)会导致传入的数据被忽略,目标地址主内存数据被加载到暂存区。保护设置为AAh(EPROM模式)会导致传入数据和目标地址主内存数据的逻辑与被加载到暂存区。任何其他保护控制寄存器设置会使相关内存页面开放,可以无限制地进行写入访问。
注:要使EPROM模式正常工作,首先必须将受影响的整个内存页面编程为FFh。
保护控制字节设置为55h或AAh也会写保护保护控制字节。保护控制字节设置为55h不会阻止复制。这允许刷新(即使用当前数据重新编程)受写保护的数据。
复制保护字节用于更高级别的安全性,只应在所有其他保护控制字节、用户字节和写保护页面设置为最终值后使用。如果复制保护字节设置为55h或AAh,则会阻止对寄存器行和用户字节行的所有复制尝试。此外,所有复制尝试写保护的主内存页面(即刷新)都会被阻止。
地址寄存器和传输状态:DS2431使用三个地址寄存器:TA1、TA2和E/S(图6)。这些寄存器对许多其他1-Wire设备是共用的,但在DS2431中的操作稍有不同。寄存器TA1和TA2必须加载目标地址,该地址是要写入数据的地址或要从中读取数据的地址。寄存器E/S是一个只读的传输状态寄存器,用于通过写命令验证数据完整性。寄存器E/S的位E[2:0]在写暂存区命令上加载传入的T[2:0],并在每个后续数据字节上递增。这实际上是在8字节暂存区内的字节结束偏移计数器。寄存器E/S的第5位,称为PF,如果暂存区中的数据由于断电或主机发送的字节数不足以达到暂存区末端而无效,它为逻辑1。对于对暂存区的有效写入,T[2:0]必须为0,且主机必须发送了8个数据字节。位3、4和6没有功能,它们总是读取0。寄存器E/S的最高位,称为授权接受(AA),作为一个标志,指示已经将存储在暂存区中的数据复制到目标内存地址。将数据写入暂存区会清除此标志。
带验证的写入:要将数据写入DS2431,必须使用暂存区作为中间存储。首先,主机发出写暂存区命令来指定所需的目标地址,然后是要写入暂存区的数据。请注意,复制暂存区命令必须在8字节边界上执行,即目标地址的三个最低有效位(T2、T1、T0)必须等于000b。
如果T[2:0]的值为非零值,则复制功能被阻止。在某些条件下(请参阅写暂存区[0Fh]部分),主机在写暂存区命令序列结束时会接收到命令、地址(实际发送的地址)和数据的反向CRC-16。在知道此CRC值的情况下,主机可以将其与其计算的值进行比较,以确定通信是否成功,并继续执行复制暂存区命令。如果主机无法接收到CRC-16,则应发送读暂存区命令以验证数据的完整性。在暂存区数据的前导码中,DS2431会重复目标地址TA1和TA2,并发送E/S寄存器的内容。如果PF标志被设置,表示数据没有正确到达暂存区,或者自上次写入暂存区的数据以来断电。主机无需继续读取,可以开始新的尝试将数据写入暂存区。类似地,将设置的AA标志与清除的PF标志一起,表示设备未能识别写命令。
如果一切都进行得正确,两个标志都会被清除。现在主机可以继续读取和验证每个数据字节。主机在验证了数据后,可以发送复制暂存区命令,例如。该命令必须紧随目标地址寄存器TA1、TA2和E/S的数据。主机应通过读取暂存区来获取这些寄存器的内容。
内存功能命令:内存功能流程图(图7)描述了访问DS2431内存所需的协议。如何使用这些功能来写入和读取设备的示例在内存功能示例部分中。主机与DS2431之间的通信可以在标准速度(默认,OD = 0)或过载速度(OD = 1)下进行。如果未显式设置为过载模式,DS2431将假定标准速度。
写暂存区[0Fh]:写暂存区命令适用于数据内存和寄存器页中的可写地址。
为使暂存区数据对复制到数组有效,用户必须从有效的行边界开始执行8字节的写暂存区命令。写暂存区命令接受无效地址和部分行,但后续的复制暂存区命令将被阻止。
发出写暂存区命令后,主机必须首先提供2字节的目标地址,然后是要写入暂存区的数据。数据从T[2:0]的字节偏移开始写入暂存区。
E/S位E[2:0]加载了起始字节偏移,并随后的每个字节递增。实际上,E[2:0]是写入暂存区的最后一个完整字节的字节偏移。只接受完整的数据字节。
在执行写暂存区命令时,DS2431内部的CRC生成器(图13)会计算整个数据流的CRC,从命令代码开始,到由主机发送的最后一个数据字节结束。这个CRC是使用CRC-16多项式生成的,首先清除CRC生成器,然后将写暂存区命令的命令代码(0Fh)、目标地址(TA1和TA2)以及所有数据字节都移入。请注意,CRC-16计算是使用主机实际发送的TA1、TA2和数据进行的。主机可以随时结束写暂存区命令。然而,如果到达暂存区的末尾(E[2:0] = 111b),主机可以发送16个读时间槽,并接收由DS2431生成的CRC。
如果尝试将写暂存区命令写入受写保护的位置,则暂存区会加载已经存在于内存中的数据,而不是传输的数据。
同样,如果目标地址页处于EPROM模式,则暂存区会加载传输数据和已经存在于内存中的数据的位逻辑与。
读取暂存区命令[AAh]:读取暂存区命令用于验证目标地址和暂存区数据的完整性。发出命令代码后,主机开始读取。
前两个字节是目标地址。接下来的字节是结束偏移/数据状态字节(E/S),后面是暂存区数据,可能与主机最初发送的数据不同。如果目标地址位于寄存器页内或处于写保护模式或EPROM模式的页面内,这一点尤为重要。有关详细信息,请参阅写暂存区[0Fh]部分。主机应该逐个读取整个暂存区(E[2:0] - T[2:0] + 1字节),在读取完CRC后,它将接收到由DS2431根据数据生成的反向CRC。如果主机在CRC之后继续读取,所有数据将为逻辑1。
复制暂存区[55h]:复制暂存区命令用于将数据从暂存区复制到可写的内存部分。发出复制暂存区命令后,主机必须提供一个3字节的授权模式,这应该是紧随其后的读暂存区命令获取的。这个3字节的模式必须与三个地址寄存器(TA1、TA2、E/S,按顺序排列)中的数据完全匹配。如果模式匹配,目标地址有效,PF标志未设置,目标内存未被复制保护,则设置AA标志并开始复制。所有8个字节的暂存区内容都会复制到目标内存位置。设备内部数据传输的持续时间为tPROG,在此期间,1-Wire总线上的电压不能低于2.8V。在数据复制完成后,将传输0和1交替的模式,直到主机发出复位脉冲。如果设置了PF标志或目标内存被复制保护,复制将不会开始,AA标志也不会被设置。
读取内存[F0h]:读取内存命令是从DS2431读取数据的一般功能。发出命令后,主机必须提供2字节的目标地址。在这两个字节之后,主机从目标地址开始读取数据,可以一直读取到地址008Fh。如果主机继续读取,结果将是逻辑1。设备的内部TA1、TA2、E/S和暂存区内容不会受到读取内存命令的影响。
1-Wire总线系统:1-Wire总线是一个系统,有一个总线主机和一个或多个从设备。在所有情况下,DS2431都是从设备。总线主机通常是微控制器。关于这个总线系统的讨论分为三个主题:硬件配置、事务序列和1-Wire信号(信号类型和时序)。
硬件配置:1-Wire总线仅有一根线,根据定义,每个总线上的设备在适当的时间必须能够驱动它。为了实现这一点,连接到1-Wire总线的每个设备必须具有开漏或三态输出。DS2431的1-Wire端口是开漏的,内部电路与图8中所示的等效。
多点总线由一个1-Wire总线和多个附加的从设备组成。DS2431支持标准通信速度和过载通信速度,分别为15.4kbps(最大)和125kbps(最大)。请注意,传统的1-Wire产品支持标准通信速度为16.3kbps和过载速度为142kbps。DS2431的略微降低的速率是由于额外的恢复时间导致的,而这又是由于1
-Wire物理接口增强以提高抗干扰能力。上拉电阻的值主要取决于网络大小和负载条件。DS2431在任何速度下都需要一个2.2kΩ(最大)的上拉电阻。
1-Wire总线的空闲状态是高电平。如果由于任何原因需要暂停事务,如果事务要恢复,则总线必须保持在空闲状态。如果这不发生,总线在过载速度下保持低电平超过16μs,或在标准速度下保持低电平超过120μs,可能会重置总线上的一个或多个设备。
事务序列:通过1-Wire端口访问DS2431的协议如下: ● 初始化 ● ROM功能命令 ● 内存功能命令 ● 事务/数据
初始化:1-Wire总线上的所有事务都以初始化序列开始。初始化序列由总线主机发送的复位脉冲和从设备发送的存在脉冲组成。存在脉冲让总线主机知道DS2431位于总线上并且已准备好操作。有关更多详细信息,请参阅1-Wire信号部分。
1-Wire ROM功能命令:一旦总线主机检测到存在,它可以发出DS2431支持的七个ROM功能命令之一。所有ROM功能命令的长度为8位。以下是这些命令的列表(参见图9中的流程图)。
读取ROM [33h]:读取ROM命令允许总线主机读取DS2431的8位家族代码、独特的48位序列号和8位CRC。仅当总线上有一个从设备时才能使用此命令。如果总线上存在多个从设备,当所有从设备尝试同时传输时(开漏输出产生有线AND结果),会发生数据碰撞。由此产生的家族代码和48位序列号导致CRC不匹配。
匹配ROM [55h]:匹配ROM命令,后跟一个64位ROM序列,允许总线主机在多点总线上寻址特定的DS2431。只有与64位ROM序列完全匹配的DS2431才会响应后续的内存功能命令。所有其他从设备等待复位脉冲。此命令可用于单个设备或总线上的多个设备。
搜索ROM [F0h]:当系统首次启动时,总线主机可能不知道1-Wire总线上的设备数量或其注册号。通过利用总线的有线AND特性,主机可以使用排除法来识别所有从设备的注册号。对于每个注册号位,从最低有效位开始,总线主机发出一组三个时间槽。在第一个时间槽上,参与搜索的每个从设备输出其注册号位的真值。在第二个时间槽上,参与搜索的每个从设备输出其注册号位的补码值。在第三个时间槽上,主机将要选择的位的真值写入。所有与主机写入的位不匹配的从设备停止参与搜索。
如果两个读取的位都为零,主机就知道存在具有位的两种状态的从设备。通过选择要写入的状态,总线主机在ROM代码树中进行分支。经过一次完整的传递,总线主机就知道了单个设备的注册号。进一步的传递可以识别出其余设备的注册号。有关详细讨论,请参阅应用笔记187:1-Wire搜索算法,包括一个示例。
跳过ROM [CCh]:在单点总线系统中,此命令可以通过允许总线主机在不提供64位ROM代码的情况下访问内存功能来节省时间。如果总线上存在多个从设备,例如在跳过ROM命令后发出读取命令,多个从设备同时传输时会在总线上发生数据碰撞(开漏下拉产生有线AND结果)。
恢复 [A5h]:为了在多点环境中最大化数据吞吐量,提供了恢复命令。此命令检查RC位的状态,如果设置了RC位,则直接将控制传递给内存功能命令,类似于跳过ROM命令。设置RC位的唯一方式是通过成功执行匹配ROM、搜索ROM或超速匹配ROM命令。一旦设置了RC位,可以通过恢复命令重复访问设备。在总线上访问另一个设备会清除RC位,防止两个或多个设备同时响应恢复命令。
超速跳过ROM [3Ch]:在单点总线上,此命令可以节省时间,允许总线主机在不提供64位ROM代码的情况下访问内存功能。与正常的跳过ROM命令不同,超速跳过ROM命令将DS2431设置为超速模式(OD = 1)。此命令之后的所有通信都必须以超速速度进行,直到最短480μs的复位脉冲将总线上的所有设备重置为标准速度(OD = 0)为止。
在多点总线上发出此命令会将所有支持超速的设备设置为超速模式。要随后寻址特定的支持超速的设备,必须发出超速速度的复位脉冲,然后是匹配ROM或搜索ROM命令序列。这加快了搜索过程的时间。如果总线上存在支持超速的多个从设备,并且超速跳过ROM命令之后是读取命令,多个从设备同时传输时会在总线上发生数据碰撞(开漏下拉产生有线AND结果)。
超速匹配ROM [69h]:超速匹配ROM命令后跟一个以超速速度传输的64位ROM序列,允许总线主机在多点总线上寻址特定的DS2431并同时将其设置为超速模式。
只有与64位ROM序列完全匹配的DS2431才会响应后续的内存功能命令。已经在先前的超速跳过ROM或成功的超速匹配ROM命令中处于超速模式的从设备将保持超速模式。所有支持超速的从设备在下一个最短480μs的复位脉冲时返回标准速度。超速匹配ROM命令可以用于单个设备或总线上的多个设备。