S3C2410中文手册第16章 触摸屏及模数转换
第十七章 RTC模块
概述
实时时钟单元RTC能够在系统电源关闭后依靠后备电池供电工作。RTC可以将8位数据通过STRB/LDRB ARM指令以BCD码的形式传给CPU,这些数据包括秒、分、小时、日期、星期几、月、和年。RTC单元在外部32.768KHz的晶振下工作,并可以执行报警功能。
特性
— BCD数据:这些数据包括秒、分、小时、日期、星期几、月、和年。 — 闰年产生器
— 报警功能:报警中断或者从掉电模式唤醒
— 解决了千年虫问题
— 独立电源引脚RTCVDD
— 支持ms中断作为RTOS内核 时钟
— 循环复位功能
RTC操作
S3C2410中文手册第16章 触摸屏及模数转换
闰年产生器
闰年产生器可以基于BCDDATE、BCDMON、BCDYEAR决定每月的最后一天的日期是28、29、30还是31。一个8位计数器只能表示两位BCD码,因此不能决定00年是否是闰年,例如它不能区别1900年还是2000年。RTC模块通过硬件逻辑支持2000年为闰年(注意1900年不是闰年,2000年才是闰年)。因此这两位“00”指的是2000年,而不是1900年。
寄存器读写
要写BCD寄存器时必须要将RTCCON寄存器的0位置1,要显示秒、分、小时、日期、星期几、月、和年等时间,必须单独读取BCDSEC, BCDMIN, BCDHOUR, BCDDAY, BCDDATE, BCDMON, and BCDYEAR寄存器的值。但是这中间可能存在1秒钟的偏差,因为要读多个寄存器。例如,用户读到的结果是2059年12月31日23点59分,如果读取BCDSEC寄存器的值是1-59则没问题,但是如果是0,由于存在这1s钟的偏差,时间将变成2060年1月1日0时0分。这种情况下,应该重新读取BCDYEAR – BCDSEC寄存器的值。
后备电池操作
即使系统电源关闭,RTC模块可以由后备电池通过RTCVDD引脚供电。当系统电源关闭时,CPU和RTC的接口应该被阻塞,后备电池应该只驱动晶振电路和BCD计数器,以最小化功耗。
报警功能
在正常模式和掉电模式下,RTC在指定的时刻会产生一个报警信号。正常模式下,报警中断ALMINT有效。掉电模式下,报警中断ALMINT有效外还产生一个唤醒信号PMWKUP。RTC报警寄存器RTCALM决定是否使能报警状态和设置报警条件。
时钟脉冲中断
RTC时钟脉冲用于中断请求,TICNT寄存器有一个中断使能位和一个相关的计数器值,当时钟脉冲发生时,计数器值到达0。中断时长如下:
Period = ( n+1 ) / 128 second
n: Tick time count value (1~127)
此时钟脉冲可用于RTOS的内核时钟。如果这样的话,RTOS的时钟相关功能将始终与实时同步。
循环测试功能
循环测试功能有RTCRST寄存器执行。秒执行发生器的循环边界可以选择为30s、40s或50s,第二个值会变为0,例如,如果当前时间是23:37:47,循环测试时间位40s,则循环测试将当前时间设为23:38:00。
注意:所有RTC寄存器都必须使用SRTB和LDRB指令或者字符型指针操作。
S3C2410中文手册第16章 触摸屏及模数转换
32.768KHz X-TAL连接示例
RTC特殊功能寄存器
RTC控制寄存器RTCCON
RTCCON寄存器由4位组成,分别是RTCEN—控制BCD寄存器的读写使能、CLKSEL、CNTSEL和CLKRST—用于测试。
RTCEN能够控制CPU和RTC的所有接口,因此在系统复位后它应该被置1以允许数据读写。在电源关闭之前,RTCEN应该清零以防止无效数据写入RTC寄存器。
S3C2410中文手册第16章 触摸屏及模数转换
RTC报警控制寄存器RTCALM
RTCALM控制报警使能和报警时间,注意RTCALM在掉电模式下产生ALMINT和PMWKUP报警信号,而在正常模式下只产生LAMINT信号。
S3C2410中文手册第16章 触摸屏及模数转换
S3C2410中文手册第16章 触摸屏及模数转换
S3C2410中文手册第16章 触摸屏及模数转换