首页 理论教育 嵌入式系统应用:S3C44B0X实时时钟操作

嵌入式系统应用:S3C44B0X实时时钟操作

时间:2023-11-23 理论教育 版权反馈
【摘要】:S3C44B0X 实时时钟框图如图6.11 所示。要解决这个问题,S3C44B0X 中的RTC 模块有支持闰年的硬线逻辑。因此,在S3C44B0X 中的两数字“00”表示2000,而不是1900。RTC 告警寄存器RTCALM 决定告警使能与禁止,并决定告警时钟设置的条件。当计数值达到“0”,产生滴答时钟中断。例如,当前时间是23:37:47,循环边界选择为40 s,则环路复位改变当前时间为23:38:00。

嵌入式系统应用:S3C44B0X实时时钟操作

S3C44B0X 实时时钟框图如图6.11 所示。

图6.11 实时时钟框图

(1)闰年发生器

该模块根据BCDDAY、BCDMON 和BCDYEAR 的数据来决定每月的最后日期是否为28、29、30 或31,这个模块通过闰年来决定最后一天。 一个8 位计数器只能表示两个BCD 数据,因此,它不能决定是否“00”是闰年。 例如,它不能区分1900 和2000。 要解决这个问题,S3C44B0X 中的RTC 模块有支持闰年的硬线逻辑。 注意:1900 不是闰年,而2000 年是闰年。因此,在S3C44B0X 中的两数字“00”表示2000,而不是1900。

(2)读/写寄存器

为了读写RTC 模块中的寄存器,必须设置RTCCON 寄存器中的位“0”。 要显示秒、分、时、日、星期、月、年,CPU 应分别读取BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON和BCDYEAR 寄存器中的数据。 但是,在RTC 模块中,由于多个寄存器在读,可能会产生一秒的偏差。 例如:当用户从BCDYEAR 到BCDMIN 读寄存器时,结果假定是1959 年12月31 日23 时59 分,当用户读BCDSEC 寄存器并且结果是从1 ~59,这没问题,但如果结果是0 s,则年月日时分秒可能变为1960 年1 月1 日0 时0 秒,因为存在1 s 偏差。 所以这时,若BCDSEC 是“0”,用户应该从BCDYEAR 向BCDSEC 重新读取数据。

(3)备用电池操作

RTC 逻辑可用备用电池驱动,即使系统电源关闭了,它也可通过RTCVDD 端口向RTC 模块提供电源。 当系统关闭时,CPU 和RTC 逻辑间的接口应关闭。 备用电池只驱动晶振电路和BCD 计数器以最小化电源消耗。

(4)告警功能(www.xing528.com)

在断电模式或正常操作模下,RTC 在一段指定时间将产生一个告警信号。 在正常操作模式中,告警中断(ALMINT)有效;在断电模式中,电源管理器唤醒信号(PMWKUP)和ALMINT都有效。 RTC 告警寄存器RTCALM 决定告警使能与禁止,并决定告警时钟设置的条件。

(5)滴答时钟中断

RTC 滴答时钟用于产生中断请求,TICNT 寄存器有一个中断使能位和一个中断计数值。当计数值达到“0”,产生滴答时钟中断。 中断周期如下:

周期=( n+1)/128 s

n:滴答时钟计数值(1 ~127)。

这个RTC 时钟滴答可用于RTOS(实时操作系统)核时钟滴答,如果RTC 时钟滴答产生时钟滴答时,则与RTOS 功能相关的时间总是与实际时间同步。

(6)循环复位功能

循环复位功能可由RTC 循环复位寄存器(RTCRST)执行。 秒产生进位的循环边界(30、40、50 s)是可选的,循环复位后秒值回到0。 例如,当前时间是23:37:47,循环边界选择为40 s,则环路复位改变当前时间为23:38:00。

注意:所有RTC 寄存器必须通过STRB、LDRB 指令或字符类型指针的字节单元来存取。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈