打印
[牛人杂谈]

RTC 实时时钟初始化

[复制链接]
2513|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
RTC实时时钟,就是用来显示时/分/秒、年/月/日/星期等信息的。上电之后,初始化完成,只要不断电,它就一直自动记录当前时间。任何时候都可以从它内部的寄存器读出当前的时间和日期
RTC一般使用外部32K做时钟源,RTC准不准,关键就看32K晶振是否准了。一般32K晶振都会有一定的误差。如果希望RTC非常准,32K晶振就要进行补偿。新唐的RTC一般都带频率补偿寄存器。补偿值需要软件自行填入。一般一批32K晶振误差都差不多,使用频率计数器测一下晶振,然后将补偿值填入RTC就可以了。补偿值具体应该填多少,TRM(技术参考手册)里面RTC部分介绍的很详细,这里就不再赘述。
RTC除了做时钟,还能产生Tick中断和Alarm中断,并能唤醒系统。
RTC中有两个特别的寄存器INIR和AER,上电之后需要写0xa5eb1357到该寄存器,让RTC退出复位状态;AER是读/写使能寄存器,默认RTC的大多寄存器只能读,有的读都不可以。写0xA965到该寄存器可以解锁寄存器读/写 512 ~ 1024个 RTC时钟周期不等,不同的芯片这块规定不同。
RTC的时钟源为32K,512个clock就是16ms,一般设定RTC功能,这个时间都够用了。

沙发
mintspring|  楼主 | 2016-5-15 12:48 | 只看该作者
NUC505的RTC需要特别介绍一下,因为这个RTC支持按键开机/关机功能。
下图是RTC的方块图,大家注意左边,除了Vbat脚和32K晶振脚之外,RTC还有2个脚:
RTC_nRWAKE、RTC_RPWER。
这两个脚的作用描述如下:nRWAKE拉low一定时间(时间长度由RTC_FREQADJ寄存器的 PKEYTIME[26:24]决定,这个寄存器下面会介绍),RPWR就会输出high,RPWR可以接到片外
LDO,使能LDO给整个芯片供电。

下面介绍一下RTC几个特别的寄存器。
这个寄存器用于控制系统上电和断电。

使用特权

评论回复
板凳
mintspring|  楼主 | 2016-5-15 12:49 | 只看该作者
一般来说nRWAKE为Low,RPWR则为High(两种关机情况例外- 软件关机&硬件关机)
Ø  SWPOWOFF 和 POWOFFEN 这两个 bit:SWPOWOFF 用于软件关机,POWOFFEN用于硬件关机,一般就是长按关机键关机。
n  只要 SWPOWOFF=1, POWEN=0 既可以实现软件关机。
SWPOWOFF 设为 1 时,即使 nRWAKE 为 Low,RPWR 仍会为 Low。如果希望 nRWAKE 为 low 时先不要关机等 nRWAKE 为 high 时再关,则只要 POWEN=0 就行了, SWPOWOFF 不要置为 1。
n  POWOFFEN 与 POWOFFT 是搭配使用的,功能类似 Notebook 长按电源键强迫关机 (是由硬件控制关机)。
POWOFFEN:使能长按强制关机功能
POWOFFT : 长按时间= (POWOFFT + 3)秒长按 nRWAKE 键(POWOFFT + 3)秒后,会强制关机
Ø  ALMIEN 和 RALMIEN 用于配置 Alarm 功能。Alarm 可以设定绝对时间 alarm 或者相对时间 alarm。
n  ALMIEN:绝对时间 Alarm
n  RALMIEN:相对时间 Alarm
RTC可以从Deep Sleep或者Power Off唤醒系统,但是只有Alarm可以唤醒,Tick不行(只有 NUC505 Tick不能唤醒系统,其它的例如:NUC100, NANO都可以唤醒)。如果是从Power off唤醒系统,则不会发生Alarm中断,但是Alarm 中断标志会被置。

使用特权

评论回复
地板
cowboy2014| | 2016-5-15 22:25 | 只看该作者
如果想让时钟精确的话是不是得用温补晶振?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

288

主题

4837

帖子

24

粉丝