Overview:
RTC在系统电源关闭的时候可以利用备份电池工作。RTC可以向CPU传输8位的BCD码数据。数据包括秒、分、
时、星期、日期、月和年。RTC单元在32.768kHz的外部时钟下工作并且可以产生alarm。
Features:
1、RCD码
2、闰年产生
3、警报功能:警报的终端或者从从断电模式唤醒
4、解决了2000年的问题
5、独立的电源管脚(RTCVDD)
6、可以产生毫秒级的tick中断来支持RTOS内核的tick
Real Time Clock Block Diagram:
LEAP YEAR GENERATOR:
闰年产生器可以通过BCDDATE、BCDMON和BCDYEAR来来决定每个月的天数是28、29、30还是31.
8位可以表示两个BCD码,所以不能断定‘00’年(末尾是两个零的年份)是否是闰年。比如,它不能分辨1900和
2000年。为了解决这个问题,S3C2440的RTC模块设计了硬件裸机去支持2000的闰年。注意1900不是闰年而2000
年时闰年。因此,在2440中,00表示2000,而不是1900.
READ/WRITE REGISTERS:
RTCCON寄存器的0位必须置高,才能写RTC模块的BCD寄存器。
为了显示秒、分、时、星期、日期、月和年,CPU必须读取BCDSEC、BCDMIN、BCDHOUR、BCDDAY
BCDDATE、BCDMON和BCDYEAR寄存器的数据。然而当多个寄存器被读取时会存在1秒的偏离。比如,当
用户从BCDYEAR到BCDMIN读取数据,结果是2059年,12月,31号,23点,59分。当用户读取BCDSEC
寄存器,寄存器的值为1--59(秒),现在看没有问题,但是,如果这个值是0秒,那年月日时分会被改为
2060年1月1号0点0分,因为前面提到的1秒的偏离。这种情况下,用户应该重新读取BCDYEAR到BCDSEC寄存器
如果BCDSEC的值是0.
BACKUP BATTERY OPERATION:
RTC可以由备份电池驱动,备份电池在系统没电的时候通过连接到RTC的RTCVDD管脚提供电源。如果系统没有
供电,CPU和RTC会锁住,备份电池仅仅驱动晶振电路和BCD的计数器来最小化电源损耗。
ALARM FUNCTION:
RTC可以再电源关闭模式或正常模式下产生警报信号。在正常操作模式下,警报的中断(INT_RTC)是可用的。
在电源关闭模式,电源管理的唤醒信号(PMWKUP)和INT_RTC都是可用的。RTC警报寄存器(RTCALM)可以
设置警报是否可用和警报时间条件的设置。
TICK TIME INTERRUPT:
RTC的tick被用来c作为中断请求。TICNT寄存器有一个中断使能位和计数值。当计数值为‘0’时,tick中断产生。
中断的时间如下计算:
Period=(n+1)/128 second
n:tick time count value(1--127)
RTCde tick可以用来RTOS内核的tick。如果tick由RTC的tick产生,那么RTOS中的时间相关函数会一直同步于RTC.
剩下的就是寄存器的用法了,这些在完善RTC字符驱动的过程中学习。