总述
实时时钟芯片(RTC)允许一个系统能同步或记录事件,给用户一个易理解的时间参考。由于RTC的应用越来越广泛,为了避开设计时出现的问题,设计者应熟悉RTCs。
选择接口
RTC可用的总线接口范围很宽。串行接口包括2线(I2C),3线和串行外设接口(SPI)。并行接口包含多总线(多数据和地址线)和带单独地址及字节数据输入的设计。接口的选择通常由所用的处理器类型决定,很多处理器包括2线或SPI接口。其它的,如8051处理器及其派生的处理器支持多路地址和数据总线。时间保持非易失性(NV)RAM和SRAM用相同的控制信号,许多处理器都提供这种方便的接口,也包括各种不同的用电池组支持的RAM。最后,看不见的时钟隐藏电池供电的RAM中并可用64位的软件协议去访问时钟。
备用电池的功能
在有的应用中,例如VCRS,如果去掉电源, 会丢失时间和日期信息,。许多新的应用中,即使主电源去掉了, 要求时间和日期信息应保持有效。为了保持时钟晶振运行,要用到一个主电源或者备用电源,或者一个大容量的电容。在这种情况下,时钟芯片必须能够在两个电源之间进行切换。
如果有一个电池,例如钮扣型锂电池用作备用电源,当在用备用电源工作时RTC应设计成尽可能少的消耗功耗。电源切换电路,一般情况下由主电源供电,会使电源切换到电池供电,并使RTC进入低功耗模式。微处理器和RTC之间的通信通常锁定(称为写保护),用来使电池供电电流最小和防止数据损坏。
许多时钟芯片都包括一个晶振控制位,通常称之为时钟中断(CH)或是晶振使能位(/EOSC)。此位通常位于秒寄存器或控制寄存器的最高位(位7),几乎在有这位的所有时钟芯片中,初始电池上的首选状态对于晶振来说是无效的。这允许系统设计者提出制造流程,在安装和测试后,用Vbat进行供电,通常用个锂电池。此时晶振处于一个停止状态,保存电池到系统电压可以工作。在这个点上,软件/硬件应该启动晶振并促使处理时间和日期。
在一般情况下,锂电池的工作温度是-40℃到+85℃。电池不能暴露在+85℃以上的环境中。含电池和暴露电池的引脚的封装,例如灵敏性插座,不应接触到水。浸水使电池短路,因此耗尽电池。
时钟模块,启封和保存限期
在备用电池模式下,时钟的电流消耗主要来自晶振。所有带有嵌入晶振和电池组的时钟模块在出厂时已经形成在里面了并且晶振是不工作的。当晶振不工作时,电池的电流小于自放电电流,或处于室内温度时每年的0.5%.
一些时间保持非易失性(NV) RAM模块用到时钟控制IC和一个SRAM,它们从厂家出来时,晶振不工作且电池对SRAM的供电是不连续的。VCC第一次去掉后,电池就连接到SRAM上,这个功能常称为“启封”,用于保存电池直到模块首次使用。其它时间保持非易失性(NV) RAM模块是单片集成电路(在一块IC中有控制器和SRAM),不需要启封。
模块封装
时间保持非易失性(NV) RAM,多路总线时钟,一些看门狗和隐形时钟都可用于模块或者电源帽封装。模块内部嵌入一个32.768Hz的晶振和一个锂电池,使得设计PCB变得更容易。然而,晶振和电池不能容耐再次回流期间的温度。在再次回流后,模块可以用手附上或插到座子上。只要锂电池不会暴露在85℃以上温度,模块也可以用波焊的方法焊到PCB上。
电源帽产品采用两片结构来提供一种能再次回流过程的表面焊接设备。用标准的回流技术可将含有RAM和时钟的模块底部安装到电路板上。在焊接之后, 含有灵敏性电池和晶振的电源帽上部会突然折断到底部。
时钟格式
RTC用到了3种主要的数据格式,BCD格式,带月,星期,年等单独寄存器的二进制格式和无格式的二进制寄数器格式。
BCD是最常用的一种格式。它流行的一个原因是时间和日期数据可以很方便的读取,而不用转换。每8位寄存器代表两个数字(每个数字一个半位),每4位比特二进制表示数字0到9。图1显示出了一个典型二进制时钟格式图。
因为有些位在特殊的时间或日期领域里不需要,这些位可以用于特殊的功能,一般情况下是用作读/写位的,也可以用硬件读返回而总是处于1或0状态,这是由设计来决定的。在图1中,秒寄存器的第7位是用作时钟中断位(CH)的。
第二种是二进制形式,各个单独的寄存器和BCD格式一样。在带BCD格式的时钟上二进制格式通常是可以编程进行选择的。
第三种是在某种参考点的无格式二进制值中,用单个的多字节寄存器来表示秒时间。
图1.典型时间和日期寄存器图
时间和日期寄存器每秒更新一次。日期的变化值依据月和二月所处的年而不同。星期寄存器除多总线时钟外,与其它寄存器无关。星期寄存器在午夜增加,并从7到1变化。只要在程序中的分配是连续的,程序员可以选定任何特殊的一天作为“1”。在总线复用时钟中,星期天必须是“1”,因为星期寄存器用白天保存测试。在先前的午夜变化上,为白天保存的测试在午夜完成了,当测试白天保存功能时这必须说明。
当时钟格式由12小时格式成24小时格式,或从BCD格式变成二进制格式,或从二进制格式变成BCD格式,时间,日期,报警寄存器都必须重新进行初始化。
无格式的二进制计数器时钟有一个单独的寄存器,代表性地是32位,每秒能增加一次。通常,寄存器值00H被认为是某些缺省的时间或日期值。例如,格林尼治时间1970年1月1号00:00:00就是“0点”。寄存器中的二进制值就代表从那一点走过的时间。软件程序必须把32位的二进制值变成可以读写的时间和日期,并且将用户数据转化成二进制值。
Y2K Compliance
FS半导体RTCs 与Y2K相适应,兼容Y2K,或者是不包括对日期敏感的逻辑。一个适应Y2K的时钟有这些逻辑,包括世纪信息(有世纪数字或世纪位),能够正确计算闰年直到2099年,但要求系统软件对世纪进行跟踪。二进制秒时钟没有对日期敏感的逻辑,软件必须计算正确的日期,包括闰年的正确性。
晶振和精确度
晶振是一种最精确的可以用来提供固定频率的电路。32768Hz的晶振用于大多数RTCs。通过划分晶振的输出频率,一个1HZ的参考频率可用于更新时间和日期。时钟的精确度主要取于晶振的精确度。调谐晶振对温度有一个抛物线响应(图2)。23ppm的误差大约为每月一分钟。
在特殊的容性负载下,晶振能调到正确的频率处振荡。在一个设计能提供6pF 电容负载的晶振的RTC中,用一个调到12.5pF的电容负载的晶振会导致RTC走得要快。
图2.晶振的精确度与温度
晶振的连接
所有FS的RTCs的内部都有一个偏置网络。晶振应直接连到X1和X2的引脚上,而没其它任何元件(图3)。晶振应尽可能近的接近X1和X2引脚。地平面应置于晶振,X1和X2下面(图4)。数字信号线应当远离晶振和晶振的引脚,有严重辐射的RFI的元件应屏蔽起来且远离晶振。低功耗的晶振电路对附近的RFI敏感,RFI会引起时钟走时变快。
图3.RTC-等效电路显示其内部的偏置网络
PC板上包括了可调晶振,例如那些带RTCs,不能把超声波排除在外。晶振可能由共振破坏。
晶振起振时间
晶振的起振时间在很大程度上依赖于晶振的特性和电路布局。高的串行等效电阻(ESR)和过大的电容负载是延长启动时间的主要因素。用含有推荐的特性的晶振和依照推荐的电路布局的电路通常能在一秒内启动晶振。
电池连接
大多数FS的RTCs都包括一个电池输入引脚。电池是用来保持当主电源断开后时钟能够正常走动。对于大多数设计来说,所用的电池都是钮扣锂电池。
有的RTCs用电源电压作为参考来决定什么时候VCC是有效电平。当VCC低于最小值时,器件进入写保护,禁止外部访问器件。当器件工作在VCC条件下时,VBAT输入将处于高阻状态。如果电池没有连接到VBAT上,或是连接到串行二极管,VBAT的输入处于高电平漂浮状态,引起RTC进入写保护。在FS的大多数时钟内部都提供反充电写保护,以消除外部二极管。
读/写时间和日期
由于在读或写的过程中可以进行内部寄存器更新而没数据的破坏,大多数FS 的时钟都提供能确保访问时间和日期的方法。
辅助缓冲寄存器(二级缓存)也用在串行时钟上。当访问(读)RTC时,当前时间和日期传送到辅助寄存器。一个脉冲读信号将从辅助寄存器中读数据,在内部寄存器连续更新时辅助寄存器的内容将保持不变。 下一次访问(当芯片有效,复位或开始)将又一次传送数据。当寄存器被写时类似的过程发生,除非数据在访问之前没有被内部寄存器刷新。
在时间保持非易失性(NV)RAM时钟上,用TE位或R和W位封存用户寄存器。
有多总线时钟里。有几种方法能确保时间和日期寄存器在访问间不变。以下方法即是:
设置位
B寄存器的SET位设为1时,用户双缓存时间和日期寄存器被锁存了。内部寄存器仍然正常的不断更新。
UIP 标志
进程中的更新标志位(UIP)每秒将产生一个脉冲。当UIP位变为高电平后,更新将在244uS后发生。如果UIP位读出的为低电平,为避免更新时的错误用户至少有244uS的时间可以读寄存器的数据。
UF 中断
如果使能,那么在每一次更新周期之后产生一次中断,该周期表明999ms能读有效时间和日期信息。
默认的寄存器值
如果数据手册中没有特殊说明,初始上电寄存器值不确定。也就是说,它们和DROM或SRAM是一样:初始上电后,用于实际的数据是随机的。
发现并解决新设计中的问题
不能和RTC通信
在新的设计并解决问题的过程中,这里有多种方法能够帮助确定产生问题的原因。例如,如果显现出来的是器件根本不通信,经常值得去确定该器件是否没读,写或两者都没。如果器件有软件使能的特点,例如方波输出,尝试着使那个特性有效是一个很好的方式去决定是否能够写器件。在2线器件上,示波器可以确定时钟在传送每个字节后是否发送应答信号。下面的段落描述了一些附加的设计中的问题并解决的提示”
有备用电池的实时时钟芯片用一个比较器在VCC和VBAT之间切换。有些实时时钟芯片用电池电压作为参考电压,另外的用一个能带参考电压决定什么时候VCC有效。当VCC下降到比较器的触发点,就不能够进行读写。在一个电压下的禁止读写有助于对处理器进行不注意的写,该处理器不再有有效的供应。而且,当VCC电压高于触发点,比较器把内部供电电源切换到VCC,防止电池耗尽。在电池电压为参考的器件中,一个悬空电池输入,在电池和VBAT之间有一个二极管的输入,或有太高电压的电池能制止和RTC的通信。确保VBAT在有效的电压范围内,并且在电池和电池输入引脚之间没有二极管。
串行时钟要求正确的向器件中写人命令字节或从地址。不正确的命令/地址经常导致器件忽略读操作。在那些情况下,数据I/O口终止于高阻态。在带上拉电阻的串行线上,数据重复经常是0XFF。在3线接口中,如果I/O口有内部下拉电阻,数据经常是0。在其他的情况下,数据重复经常是命令字节最后一位的值。有些串行时钟用分离的输入作输出,以便在一个较低供应电压时允许处理器协调工作。没接有效的供应到输入端会阻止I/O口驱动高电平。最后,如果软件不能使处理器的端口(接到了时钟的输入输出引脚)从输出(写命令节)切换到输入(读数据),那么输出的数据可能是全0或全1。
无效时间和数据值
大多数时间和日期寄存器能够接收任何值,包括无效值。如果无效值进入寄存器,那么该值将不断增加,直到和发生翻转的位相匹配后比较,达到最小值。如果时钟处于错误的模式。也可能造成无效值,例如,二进制码取代BCD码,或12小时制取代24小时制。
数据丢失/数据破坏
有两种情况可以引起数据丢失:无意中的写时钟或反相小故障脉冲电压用到IC上。因为CH或/EOSC位(带晶振控制位的时钟上)处于默认的停止状态, 反相电压输入到IC所造成的数据丢失有时能辨认。另外,大多数而不是所有的寄存器中的数据会破坏。无意中的写一般发生在电源周期时,但是通常只影响一个寄存器,而不影响串行时钟。
在上电和/或掉电时许多现代的开关电源将在VCC上产生一个-5V或-6V或甚至更大的毛刺。通过输入保护二极管,这个负电压耦合到内部时钟电源。如果电源能够提供比电池大的电流,那么数据将丢失。在某种情况下,用一个肖特基二极管可以钳位这个负毛刺电压。另外一个时钟上的负电压源来自RS232连接器。如果带时钟芯片的PCB板掉电,上电的PC或其他器件通过RS232连接器连接到那块板上,RS232收发器芯片可能将负电压传到不上电的PCB板上的其他芯片。
无意中的写也可能造成数据破坏。在写保护为有效前,在上电或掉电期间处理器能写入错误的数据。在上电和掉电时,接口电路可能迫使输入引脚进入写状态。在多总线时钟的情况下,地址信号锁存在ALE的下降沿。如果/WE和/CS在器件处于写保护之前变为低电压,那么在最后寄存器中最后访问的数据会破坏。VCC的上升时间和下降时间应核对无误以用于数据手册的需要。
不正确的中断程序处理造成间断的数据问题。在某些情况下,时间和数据信息复制到RAM中去了,并且复制不是同步的。最后,在电路仿真(IEC)硬件配置不当,可以造成奇怪的行为。
晶振问题
时间不能增加的最普遍原因是晶振没使能。许多FS时钟芯片有一个在晶振工作前须置1的控制位(通常位于第二个寄存器)。
为延长电池使用时间,振荡电路设计成低功耗。晶振的连接问题能降低闭环增益,阻止晶振工作。接到晶振的外部电容也减少闭环增益,增加启振时间或阻止振动。示波器的探头也能够阻止振动。带45K以上的等效串行电阻(ESR)的 晶振也将减少闭环增益。最后,留在电路板上的焊锡清洁剂可能阻止晶振起振。
评论
查看更多