- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RTC实时时钟介绍和代码
RTC实时时钟
什么是RTC实时时钟
在一个嵌入式系统中,通常采用RTC 来提供可靠的系统时间,包括时分秒和年月日等;而且要求在系统处于关机状态下它也能够正常工作(通常采用后备电池供电),它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的32.768KHz 晶体和电阻电容等。
S3C2410实时时钟的基本特性
实时时钟(RTC)单元可以通过备用电池供电,因此,即使系统电源关闭,它也可以继续工作。RTC 可以通过STRB/LDRB 指令将8 位BCD 码数据送至CPU。这些BCD 数据包括秒,分,时,日期,星期,月和年。RTC 单元通过一个外部的32.768KHz晶振提供时钟。RTC具有定时报警的功能。RTC 控制器功能说明:
时钟数据采用BCD 编码
能够对闰年的年月日进行自动处理
具有告警功能,当系统处于关机状态时,能产生告警中断;
具有独立的电源输入
提供毫秒级时钟中断,该中断可用于作为嵌入式操作系统的内核时钟
RTC实时时钟的结构框图
RTC模块构成
闰年产生器
这个模块可以根据BCDDATA,BCDMON,以及BCDYEAR的数据决定每个月的最后日期是28,29,30 还是31。一个8位的计数器只能显示两个BCD码,因此它不能判断00 年究竟是不是闰年。例如它不能够判断1900 年和2000 的差别。。为了解决这个问题,S3C2410内的RTC 模块中有一个固定的逻辑,用来支持2000 年为闰年。请注意虽然2000 年是闰年,但1900 年不是闰年。因此,S3C2410 中00 代表2000 年,而不是1900 年。
读/写寄存器
要求置高RTCON 寄存器的0 位来表示读和写RTC 模块中的寄存器。。为了显示秒,分,小时,日期,月和年,CPU 会从BCDSEC,BCDMIN,BCDHOUR,BCDDAY,BCDDATE,BCDMON,和BCDYEAR 寄存器读取数据。但是由于多个寄存器的读取,可能产生1 秒钟的偏离。例如,如果用户读取寄存器BCDYEAR 到BCDMIN,假设结果为1959 年,12 月,31 日,23 点,59 分。在用户读取BCDSEC 寄存器时,但如果结果是0,那么很有可能年,月,日,时,分已经变成了1960 年1 月1 日0 时0 分了。解决的方法是,当读取到的BCDSEC 等于0 时,用户应该在读取一次BCDYEAR到BCDSEC 的值。
备用电池
RTC可被备用电池驱动,备用电池通过RTCVDD引脚向RTC提供电压。当系统掉电时,RTC与CPU之间的接口被阻塞,备用电池仅仅驱动振荡电路以及BCD计数器,这样可减少能量损耗。
报警功能
RTC工作在掉电模式或正常工作模式时会在一个特定的时间产生报警信号。在正常工作模式下,报警中断(ALMINT)是激活状态的。在掉电模式下,电源管理唤醒信号(PMWKUP)与报警中断(ALMINT)都是激活状态。RTC的报警寄存器(RTCALM)决定了报警的使能与不使能以及报警时间设定的条件。
节拍中断
RTC 节拍时间用于中断请求。TICNT 寄存器具有一个中断使能位,同时其中的计数值用于中断。当计数值到达0 时,节拍时间中断就会触发。中断的间隔时间计算如下:
Period=(n+1)/128 秒
备注n : 节拍时间计数值(1~127)
这个RTC 时间节拍中断功能可以作为RTOS(实时操作系统)内核的时间节拍。如果节拍从RTC 时间节拍产生,则RTOS 内部与时间相关的功能将一直与实时时钟同步。
RTC相关寄存器
RTC控制寄存器
寄存器 地址 读/写 描述 重置值 RTCCON 0L)
0B) 读/写
(用字节) RTC控制寄存器 0x0
RTCCON 位 描述 初始状态 CLKRST [3] RTC时钟计数重置。
0 = 没重置,1 = 重置 0 CNTSEL [2] BCD计数重置。
0 = 合并BCD计数器
1 = 保留(单独的BCD计数器) 0 CLKSEL [1] BCD时钟选择。
0 = XTAL 1/(2的15次方) 分开的时钟
1 = 保留(XTAL时钟只用于测试) 0 RTCEN [0] RTC控制使能。
0 = 失能,1 = 使能
注意:只有BCD时间计数和读取操作可以被执行。 0
实时时钟计数器(TICNT)
寄存器 地址 读/写 描述 重置值 TICNT 0L)
0B) 读/写
(用字节) 实时时钟计数器 0x0
TICNT 位 描述 初始状态 TICK INT ENABLE [7] 实时时间中断使能。
0 = 失能,1 = 使能 0 TIC
文档评论(0)