当前位置:文档之家› RealTimeClock_17

RealTimeClock_17

RealTimeClock_17
RealTimeClock_17

第17章实时时钟

概述

当系统电源关闭时,实时时钟(Real Time Clock :RTC)单元可以在后备电池的支撑下工作。RTC 能传送一个8位的数给CPU作为BCD码(Binary Coded Decimal)的值用于STRB/LDRB的ARM 操作中。提供的数包括秒、分、时、星期、日、月和年。RTC单元与外部32.768kHz的晶振一起工作,并且能提供报警功能。

特性

BCD数字:秒、分、时、星期、日、月和年

闰年发生器

报警功能:报警中断或从休眠模式中唤醒

解除了2000年(千年虫)的问题

独立的电源引脚(RTCVDD)

为实时操作系统(RTOS)内核的计时嘀嗒,提供毫秒嘀嗒计时中断

循环复位功能(Round Reset Function)

实时时钟操作

图17-1 实时时钟框图

闰年发生器

闰年发生器能判定每个月的最后一天是28、29、30或31,判定基于来自BCDDA TE、BCDMON 和BCDYEAR的数据。在判定一个月的最后的日期时,RTC模块会考虑闰年的情况。一个8位的计数器只能代表2个BCD数字,因此RTC模块不能判定“00”年(一个最后两位是0的年)是否是一个闰年。例如,它不能区分1900和2000年。为解决这个问题,在S3C2410A中的RTC模块有一个硬连线的逻辑来支持2000年为一个闰年。注意,当2000年是闰年时,1900年不是一个闰年。所以,S3C2410A中的“00”两个数字被解释为2000,而不是1900。

读∕写寄存器

为了写RTC模块中的BCD寄存器,RTCCON寄存器的位0必须设置为1。为了显示秒、分、时、星期、日、月和年,CPU应读取RTC模块中的BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDA TE、BCDMON和BCDYEAR相应寄存器中的值。由于多个寄存器被读出,一个一秒的误差可能存在。例如,当用户从BCDYEAR读到BCDMIN寄存器时,结果假定为2059(年)、12(月)、31(日)、23(时)和59(分)。当用户读BCDSEC寄存器并且读出的值的范围为1到59秒时,没有任何问题,但如果秒数为0秒时,因为遇到1秒误差的情况,年、月、日、时和分就应变成2006(年)、1(月)、1(日)、0(时)和0(分)。这种情况下(秒数为0),用户应重新读取年份到分钟的值。

后备电池操作

RTC逻辑能由后备电池驱动,即使系统电源关闭了,后备电池也能通过RTCVDD引脚为RTC 模块提供电源。当系统关闭时,CPU与RTC逻辑块间的接口应该被阻断,随后,后备电池只驱动振荡电路和BCD计数器,从而达到最小的功耗。

报警功能

在休眠模式或常规模式的一个指定时间,RTC产生一个报警信号。在常规模式,报警中断信号(ALMINT)被激活。在休眠模式,电源唤醒信号(PMWKUP)和报警中断信号同时被激活。RTC 报警寄存器(RTCALM)决定报警使能∕禁止的状态,并决定报警时间条件的设置。

嘀嗒计时中断(Tick Time Interrupt)

RTC的嘀嗒计时可用于中断请求。TICNT寄存器有一个中断使能位和一个用于中断的计数值。当嘀嗒计时中断发生时,计数值计到“0”。中断周期按下式计算:

Period = ( n + 1) / 128 second

其中,n 为嘀嗒计时计数值(Tick Time count value)(1~ 127)。

RTC的计时嘀嗒可用作RTOS的内核计时嘀嗒。如果操作系统的计时嘀嗒由RTC的计时嘀嗒产生,RTOS中与时间相关的功能将总是保持实时同步。

循环复位功能(Round Reset Function)

循环复位功能由RTC的循环复位寄存器(RTCRST)完成。秒进位发生器的循环边界(30、40或50秒)可以被选择,在循环复位时,秒的值可被循环到0。例如,当当前时间为23:37:47并且循环边界选为40秒,循环复位将使当前时间改变为23:38:00。

注意:所有RTC寄存器必须以字节为单位,用STRB和LDRB指令或字符指针来访问。

32.768KHz X-TAL 连接举例

图17-2 展示了RTC单元的工作在32.768KHz的振荡器电路

图17-2 主振荡电路举例

实时时钟专用寄存器组

实时时钟控制寄存器(RTCCON)

RTCCON由RTCEN等4个位组成,这个寄存器控制BCD寄存器、CLKSEL、CNTSEL和用于测试的CLKRST寄存器的读∕写使能。

RTCEN位能控制CPU和RTC之间的所有接口,因此在一个RTC控制程序中,它应被设置为“1”,以便在系统复位后,能使能数据的读∕写。同样在关机之前,RTCEN位应该被清零,防止不经意地写RTC寄存器。

实时时钟控制寄存器(RTCCON )(续)

注意:

1、 所有RTC 寄存器必须以字节为单位,用STRB 和LDRB 指令或字符指针来访问。

2、(L ): 小端存储模式 (B ):大端存储模式

嘀嗒计时计数寄存器(

Tick Time Count Register: TICNT )

RTC报警控制寄存器(RTCALM)

RTCALM寄存器决定报警使能和报警的时间。注意RTCALM寄存器在掉电模式可以通过ALMINT和PMWKUP来产生报警信号,但在常规操作模式,只能通过ALMINT产生报警信号。

报警秒数据寄存器(ALMSEC)

报警分钟数据寄存器(ALMMIN)

报警小时数据寄存器(ALMHOUR)

报警日期数据寄存器(ALMDATE)

报警月份数据寄存器(ALMMON)

报警年份数据寄存器(ALMYEAR)

RTC循环复位寄存器(RTCRST)

BCD秒寄存器(BCDSEC)

BCD分钟寄存器(BCDMIN)

BCD小时寄存器(BCDHOUR)

BCD日期寄存器(BCDDATE)

BCD DAY REGISTER(BCDDAY)

BCD MONTH REGISTER(BCDMON)

BCDYEAR REGISTER(BCDYEAR)

相关主题
文本预览
相关文档 最新文档