1、简介
实时时钟(RTC)常用于日历时钟和低功耗应用中的唤醒。在使用外部低速晶振的条件下,RTC可以在所有的低功耗模式下正常工作,因此常用于实现芯片的低功耗唤醒。
RTC电路分属于两个电源域,可以看到一部分位于备份域当中,该部分包括一个32位的累加计数器、一个闹钟、一个预分频器、一个分频器以及RTC时钟配置寄存器,因此当RTC在系统复位或者从待机模式下被唤醒时,其设置和时间都会保持不变。另一部分位于VDD电源域当中,该部分只包括APB接口和一组控制寄存器。
2、主要特性
32位可编程计数器,用于计数运行时间。
可编程的预分频器:分频系数最高可达
独立时钟域:PCLK1时钟域、RTC时钟域(该时钟必须比PCLK1时钟至少慢4倍,是为了确保即使在电池供电下,RTC仍然能稳定工作,并有足够的精度来维持定时任务,同时不会因为高频率而导致不必要的能量消耗。如果PCLK1时钟发生异常或降频,RTC则依然能正常提供基本的时间服务)。
RTC时钟源:HXTAL时钟除以128、LXTAL振荡电路时钟、IRC40K振荡电路时钟。
可屏蔽的中断源:闹钟中断(是一种预定的事件,通常用来唤醒睡眠中的设备,执行定时任务,或者作为某个特定操作的触发信号)、秒中断(为周期性中断或计时中断,每过一秒就会发生一次,主要用于精确的时间同步,比如定期刷新数据或更新计数器)、溢出总断(当RTC内部的计数器达到最大值并重新初始化时,会产生溢出中断。这表明一段计时周期已经过去,可以用来检测时间流逝,例如在定时器应用中,当计数器超过设定值后就可能引发中断,以便处理新的定时任务)。
3、功能
RTC电路主要包含两个部分,位于PCLK1时钟域的APB接口和位于RTC时钟域的RTC内核。
APB接口和APB1总线相连,包含一组寄存器,可以通过APB1总线进行读或写。
RTC内核主要包括两个模块,其一是RTC预分频模块,用于产生RTC时间的基准SC_CLK,如果对RTC_INTEN寄存器进行秒中断位使能,RTC会在每个SC_CLK上升沿产生一个秒中断。另一个模块是一个32位可编程计数器,这个计数器的数值可以被初始化为当前系统时间,,如果对RTC_INTEN寄存器进行闹钟中断位使能,RTC会在系统时间等于闹钟时间(存储在RTC_ALRMH/L寄存器)时产生一个闹钟中断。
3.1 RTC复位
APB接口和RTC_INTEN寄存器会随着系统复位进行复位,而RTC内核(预分频器