DS28DG02用户指南
2008-01-28
作者:美信公司
摘 要:DS28DG02是带有PIO、实时时钟(RTC)、复位、电池监控器和看门狗的2kb SPI? EEPROM,它组合了便携式设备和嵌入式应用中需要的多种功能。本应用笔记对产品数据资料进行补充说明,给出SPI接口及其写保护方案的详细信息,阐述怎样使用器件的12个PIO和RTC闹钟功能。文档还包括电池选择指南、RTC晶振" title="晶振">晶振焊盘屏蔽,以及报警事件的软件响应等。
通信接口
DS28DG02是从机EEPROM器件,通常由微控制器" title="微控制器">微控制器构成的主机利用它通过串行外设接口(SPI)来访问其资源。SPI最初由Motorola针对MC68HCxx系列微控制器而建立。表1列出了标准SPI信号名称以及它们的功能。
表1. SPI信号名称
Motorola名称 | 功能 | 其他名称 |
|
串行时钟,推挽驱动,由主机产生。如果满足上升时间和下降时间规范,可以使用开漏驱动。 | SCK, SK, C |
|
从机至主机数据线,“主机输入,从机输出”。由从机驱动的高阻抗推挽输出连接至主机的串行输入。 | SO, DO, Q |
|
主机至从机数据线,“主机输出,从机输入”。由主机驱动的高阻抗推挽输出连接至从机的串行输入。 | SI, DI, D |
|
从机选择,推挽输出,由主机产生。 | CSZ, 低电平有效CS |
基本的SPI通信在主机和从机同时采用了移位寄存器。移位寄存器的输入和输出相连,形成一个环回,如图1所示。时钟信号在主机驱动下,将8比特串行数据块由主机传送至从机,同时由从机传送至主机,从而实现了SPI全双工协议。但是,大部分SPI从机,包括DS28DG02,在接收或者发送数据前,首先需要一条命令。同样,在半双工模式下,数据由主机传送到从机或者由从机传送到主机。
图1. SPI通信概念
SPI规范定义了四种模式,由SPI主机中的控制位CPOL和CPHA进行选择。在怎样参考这些模式上还没有标准。表2列出了SPI文档中常用的模式定义。
表2. SPI模式定义
SPI模式 | CPOL | CPHA | 说明 |
0或者(0,0) |
|
|
时钟空闲状态为低电平。在时钟上升沿采集数据,在时钟下降沿移位输出。 |
1或者(0,1) |
|
|
时钟空闲状态为低电平。在时钟下降沿采集数据,在时钟上升沿移位输出。 |
2或者(1,0) |
|
|
时钟空闲状态为高电平。在时钟下降沿采集数据,在时钟上升沿移位输出。 |
3或者(1,1) |
|
|
时钟空闲状态为高电平。在时钟上升沿采集数据,在时钟下降沿移位输出。 |
DS28DG02支持SPI模式(0,0)和(1,1)。这些模式中,在时钟上升沿采集(同步输入)数据,在时钟下降沿移位输出(可能会改变)。CSZ下降沿的时钟状态告诉DS28DG02主机使用了哪一SPI模式。如果试图在模式(1,0)或者(0,1)中进行通信,则无法确定器件的行为。
关于SPI协议以及时序的其他信息,请参考DS28DG02数据资料中的SPI接口一节,也可以在互联网上搜索关键词“SPI slave timing”。通过网络搜索到的文档大部分是关于微控制器的,根据内部寄存器设置,这些微控制器能够实现SPI主机或者从机。第三方文档很好地介绍了SPI概念,解释了SPI主机的设置,这些文档有:
http://www.mct.net/faq/spi.html (一般信息)
http://www.atmel.com/dyn/resources/prod_documents/doc2585.pdf (主机设置)
写保护方案
SPI存储器采用3级方案来保护存储器不会受到无意的或者未授权的改动:SPI状态寄存器" title="状态寄存器">状态寄存器中的WEN位;使用SPI状态寄存器中控制位的块写保护;使用引脚状态和SPI状态寄存器中使能位的硬件写保护。DS28DG02独有的寄存器写保护和块写保护在同一级上,但是采用了不同的存储器区。表3列出了控制位及其对存储器的影响。
表3. 写保护控制
级 | 控制位 | 受保护的存储器 |
|
WEN | 所有的可写存储器地址以及SPI状态寄存器 |
|
BP1:BP0 | 地址000h至0FFh |
|
RPROT | 地址120h至135h |
|
WPEN (结合WPZ引脚状态) | SPI状态寄存器,仅非易失位。 |
1级:SPI状态寄存器中的WEN位
在上电" title="上电">上电,成功完成写功能命令后,或者通过SPI命令WRDI (写禁止),该位被清位。设置WEN位的唯一方法是通过SPI命令WREN(写使能)。注意:在SPI主机出现故障时,WEN位能够防止可写存储器失效。
2级:SPI状态寄存器中的BP1:BP0位
这一常用的写保护方法使用SPI状态寄存器(BP1:BP0)的两个非易失位对EEPROM的所有位、上半部分、上四分之一部分进行写保护,也可以不进行写保护。控制位在SPI状态寄存器中,可受到硬件写保护。没有硬件写保护时,可以通过软件控制来修改块写保护。注意:块写保护将某些EEPROM配置为只读,而将其他的EEPROM留给主机存储数据,在最终产品正常工作时可修改这些数据。
2级:SPI状态寄存器中的RPROT位
这是DS28DG02的一个特殊功能,该方法使用SPI状态寄存器的非易失RPROT位对地址120h以及更高地址范围的用户可写字节进行写保护。如果RPROT是1,对这些地址进行写保护。这保护了RTC、RTC闹钟寄存器、多功能控制/设置寄存器,以及报警/状态寄存器,防止对PIO进行写操作。这一级写保护并不保护PIO相关寄存器的上电默认值,这些数值存储在10Ah至10Fh中。RPROT位在SPI状态寄存器中,可受到硬件写保护。没有硬件写保护时,可以通过软件控制来修改RPROT。注意:寄存器写保护可防止对RTC及其警报的意外改动,还可以防止对最终产品中定义DS28DG02功能的寄存器的改动(例如,看门狗、电池监控器、RTC)。
3级:SPI状态寄存器中的WPEN位
该方法使用WPZ引脚以及SPI状态寄存器中的WPEN位。该功能只保护SPI状态寄存器的非易失位,特别是块保护位BP1:BP0、RPROT和WPEN。WPEN位被置为1时,使能WPZ引脚来控制SPI状态寄存器中的所有非易失位,包括WPEN。对于出厂SPI存储器,WPEN位读0。这样,即使WPZ引脚连接至地,也可以对电路板测试仪上的存储器进行编程。在最后一步中,对存储器编程后,测试仪设置2级保护,将WPEN位写入1,从而激活硬件写保护。只要WPZ引脚的逻辑状态保持为0,SPI状态寄存器的非易失位将保持写保护不变。要修改任一非易失位,必须将WPZ引脚的逻辑状态改为1,例如,通过跳接器,将引脚临时连接至VCC。注意:硬件写保护对2级保护进行永久设置,但还是留有一个后门(WPZ引脚),以便今后的改正。
注意:寄存器写保护被永久使能后,清除看门狗、RTC和电池警报的唯一方法是VCC再次上电。不论VCC电源如何,换掉电池后,清除多功能控制/设置寄存器和RTC及其警报寄存器。如果硬件写保护和寄存器写保护都被激活(RPROT = 1,WPEN = 1,WPZ引脚连接至地GND),用户可能需要致电设备生产商,以重新配置设备,重新运行。
电池选择
DS28DG02需要电池来维持存储在地址134h多功能控制/设置寄存器中的配置信息,并保持RTC运行。如果VCC可永久使用,则不需要电池,VBAT引脚连接至VCC。如果VCC中断,没有电池备份,多功能控制/设置寄存器上电时所有位都是0。这会停止RTC,禁止时钟闹钟、看门狗和电池监控器。这是正常设置,与不使用RTC和看门狗的应用无关。典型DS28DG02应用至少会使用RTC或者看门狗,因此需要电池,并对电池进行监控。
只有切断VCC,才能节省电池功耗。有两种情况需要注意:a) RTC振荡器停止时(关断,OSCE = 0);b) RTC振荡器接通时(运行,OSCE = 1)。理论上,还有第三种情况和电池监控器有关。但是,电池监控器(IMAX = 20μA)电池最大负载每小时只持续2秒时间,因此,平均负载电流为11nA (20μA x 2/3600),比RTC关断时的负载低两倍。电池监控器并没有缩短电池的使用时间,因为只有VCC工作时才进行监控,RTC和其他非易失存储器单元由VCC进行供电,而不是电池供电。
DS28DG02的典型电池电压为3V,由一块锂电池(Li+)或者两块串联的氧化银钮扣电池进行供电。通常以mAh (毫安时)来表示这些电池的容量。通过负载电阻,测量电池电压下降到规定阈值的时间来获得性能指标,方法和某些应用相似。电池生产商的数据资料上有详细信息:
http://www.panasonic.com/industrial/battery/oem/chem/lith/coin1.htm
http://www.rayovac.com/technical/pdfs/pg_lithium.pdf
http://data.energizer.com/DataSheets.aspx
假设电池和电容类似,电池的放电时间为t = Q/I。例如,如果电池为1mAh,放电电流为1μA,那么放电时间为:
按照下面公式,这一结果与电池容量和放电电流之比相乘:
例如,如果负载电流是10μA,48mAh电池能够使RTC运行48/10 x 41.66,即200天。+25°C左右,RTC接通时的最大负载电流为4.7μA。因此,同样的电池可持续使用:
两块电池串联可加倍电压和容量,但并不延长电池使用时间。为确定使用时间,必须将一块电池的容量带到公式2中,这是因为电流流过串联的每块电池,以同一速率对每块电池放电。
使用PIO
DS28DG02有12个PIO通道。在典型应用中,有的PIO被用作输入,其他的用作输出,而有的根本就没有使用。在存储器映射上“靠近”的PIO (PIO0至PIO7,PIO8至PIO11)在电路板上并不靠近。对于TSSOP,所有偶数PIO位于封装的左侧,奇数PIO位于封装的右侧。对于TQFN,3个偶数PIO位于封装西侧,3个奇数PIO位于封装东侧,剩余的6个PIO,包括奇数和偶数,位于封装的南侧。这样看起来虽然不太寻常,但是并不影响器件的使用。
如果输出模式中没有PIO需要吸收或者源出大电流" title="大电流">大电流,可以采用小电流输出模式。在小电流输出模式中,对于所有共享同一存储器地址的PIO,同时进行PIO读写。如果第5至第8个PIO需要同时读或者写,选择PIO通道0至通道7,以最适合电路板布板拓扑的方式,将它们分配给应用中的节点。由于大电流模式写并不是同时进行,因此,只有优化电路板布板时采用PIO。下面的例子介绍了分配PIO通道的一种方法。
配置实例
输出: | 6 |
输出类型: | 4路推挽,2路开漏 |
输出模式: | 小电流(同时写) |
输入: | 4 |
反向读 | 无 |
没有使用: | 2 PIO |
以逆时针方向来看DS28DG02的PIO引脚分配,共享同一存储器地址的PIO顺序为0、4、6、2、3、7、5、1。这种顺序和封装类型无关。明显靠在一起的是第6、第2、第3和第7通道。对于其他的两路输出,由于引脚靠近,把第0通道和第4通道分配给它们。这一方法没有使用第1和第5通道。输出类型按4个PIO一组进行设置,0至3,4至7以及8至11;同一组中的PIO有同样的输出类型。实例中的4路输出需要采用推挽。对于刚进行的分配,这可以是第0至第3通道,或者第4至第7通道。由于没有使用第1通道,只有第0、第2和第3通道,因此,无法满足这种输出类型。
为满足输出类型的要求,必须改变通道分配。第4至第7通道现在被用于推挽(任意选择),第2和第3通道为开漏。这样,没有使用第0和第1通道。输入被分配给第8至第11通道,它们也共享同一存储器地址。
下一步,必须定义这一配置的上电默认寄存器值,并写入对应的存储器地址。下表使用以下颜色来解释所进行的选择。
Value resulting from configuration/application requirements | |
Arbitrary assignment, "don't care" condition | |
(Not assigned, reserved) |
PIO输出状态上电默认值
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
PIO方向的上电默认值
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
PIO反向读的上电默认值(PIO0至PIO7)
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
PIO反向读的上电默认值(PIO8至PIO11),PIO输出类型和输出模式
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
利用数据资料中的通信实例定义,将定义为输出的PIO按下面序列进行更新:
SEL | WREN | DSEL | SEL | WRITEH | <20h> | <1 byte PIO data> | DSEL |
要在PIO产生波形模式,并不需要以不同的PIO数据来重复整个序列。而是发送需要的PIO数据字节;第1、第3和第5等字节被用于更新PIO。由于PIO 8至11被分配为输入,因此,其他字节(第2、第4和第6字节等)不起作用。
下面的序列读取被定义为输入的PIO:
SEL | READH | <27h> | <1 bytes PIO data> | DSEL |
要快速从PIO重复读取,并不需要重复整个序列。而是使用起始地址126h,读取需要的字节。第1、第3和第5等字节返回被定义为输出的通道状态。其他字节(第2、第4和第6字节等)报告被分配为输入的PIO 8至11的数据。
PIO大电流模式
对于写操作,PIO可以工作在小电流模式或者大电流模式下。以同样的方式对所有的PIO线进行模式选择。在小电流模式中,共享同一字节地址的所有PIO同时开关。此外,如果以写入地址120h来开始访问PIO,对于DS28DG02接收到的每一数据字节,写地址在120h (PIO0至PIO7)和121h (PIO8至PIO11)之间切换。这种方法支持对PIO的快速写入,因此,不需要在下一次写访问之前执行WREN命令。
在大电流和小电流模式下,PIO有相同的电流吸收或者源出能力。然而,在大电流模式(OTM = 1)下,PIO每次一个通道连续切换;PIO电流摆率受到有源电路的限制。大电流模式并不采用地址切换。地址是从120h递增到121h,然后是122h,以此类推。要再次写入地址120h,则需要新的写序列。
如果DS28DG02有稳定的VCC供电,打开PIO后立即产生复位,感应电压尖峰进入VCC监控器,被错误地认为出现电源失效。在这种情况下,要么必须使用大电流模式,要么一次开关的通道数量小于8个,以软件模拟大电流模式,从而保证电流变化不会超过最大额定±50mA。
RTC晶振和PCB布板
各种封装类型和尺寸都提供了32kHz表晶振。DS28DG02数据资料中的PCB布板假设晶振引脚间距和封装(TSSOP—0.65mm;TQFN—0.50mm)引脚间距相匹配。这是非常紧凑的间距,可能不太容易获得这么小的晶振。为适应更大的晶振,需要对PCB布板进行改动,如图2所示。保持好保护环和局部地平面非常重要。晶振引脚X1和X2至晶振焊盘的走线应尽量对称。
图2. 可供选择的另一种PCB布板
关于晶振选择的详细信息,请参考Maxim应用笔记#616,Considerations for Maxim Real-Time Clock Crystal Selection。该文档还包括SMD晶振的技术数据,以及其他供应商网站的链接。
时钟闹钟
DS28DG02能够从每秒一次到每月一次产生RTC闹钟。通过ALMZ引脚发出报警,电池报警和看门狗报警也使用该引脚。作为时钟闹钟的前提条件,必须运行RTC,并使能时钟闹钟(OSCE = 1, CAE = 1)。
一般而言,要消除时钟闹钟,时钟状态必须与闹钟寄存器中的数值相匹配。有4个RTC闹钟寄存器:秒、分钟、小时、星期日期或者月日期。闹钟寄存器中的最高有效位是AM1至AM4,它们控制寄存器是否参与对比。地址133h的DY/DT位规定剩下的6个比特是否和RTC的星期日期或者月日期进行对比。在其他方面,闹钟寄存器和RTC的位分配相匹配。
定义好闹钟时间和频率后,将每个比特(BCD代码)写入模板,将结果转换为十六进制格式(“Hex”列),从而产生时钟闹钟寄存器数据。然后,通过SPI写序列,将获得的数据写入闹钟寄存器。下面的例子解释了这一过程。这里的颜色表示和上面PIO一节的相同。
实例1:每小时的25分钟30秒产生闹钟
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
实例2:24小时格式,每天在22:59:59产生闹钟
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
实例3:12小时格式,在每星期的第一天6:30:00PM产生闹钟
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
看门狗
CPU监控电路中一般采用看门狗。技术上,看门狗可以解释为可重触发单稳态工作方式。在不稳定状态时,微控制器周期性地将正脉冲加到看门狗的触发输入WDI上,保持一次触发单稳态。如果微控制器做不到这一点,看门狗超时,复位微控制器。
通过SPI状态寄存器的WD1:WD0位来选择DS28DG02的看门狗超时。在寄存器的写访问没有被阻塞
装上电池(电池安装)或者上电复位(如果没有电池)时禁用了看门狗
报警响应
在地址135h的DS28DG02报警和状态寄存器留有6个比特来指示重要事件。在出现这类事件时,微控制器应特别对待,分别进行响应,如下所示。如果RPROT = 0,向该寄存器写入0,所有报警被清除。
RST:复位标志 | 在RSTZ引脚上有脉冲时,该位被置位,例如,VCC增大时的上电复位,手动复位,或者看门狗报警等。控制器执行其正常上电来进行响应。 |
WDA:看门狗报警 | 看门狗报警复位微控制器,对RST也会有相同的响应。微控制器能够计数看门狗报警事件的次数。 |
CLKA:时钟闹钟 | 对于时钟闹钟,微控制器有专门的响应。 |
BOR:电池接通复位标志 | 连接电池后,多功能控制/设置寄存器、RTC以及RTC闹钟寄存器被清零。这是一种错误状态,需要进行初始化,例如,通过用户输入(时间)和存储在EEPROM中的备份数值来恢复丢失的数值。如果使能了硬件写保护,并且RPROT = 1,除非用户知道怎样禁用硬件写保护,否则需要将设备送回,以便进行维修服务。微控制器通过WPZV位来监视硬件写保护。 |
POR:上电复位标志 | 上电复位在RSTZ引脚产生一个脉冲。微控制器执行其正常上电来进行响应。 |
BATA:电池报警 | 该报警指示备用电池接近最终使用寿命。这一状态要求用户注意换电池。根据不同的应用,可以对电池报警事件进行计数,达到一定计数值后,在换电池之前,设备停止工作。 |
结论
在需要存储器、RTC、PIO以及电源监控器和看门狗等CPU监控功能的便携式设备和其他应用中,DS28DG02是非常灵活并且使用方便的元件。
SPI是Motorola, Inc.的商标。