概述
实时时钟(RTC)是一个独立的二进制编码十进制(BCD)计时/计数器。它能以年、月、日、时、分、秒为单位,精确提供当前日期和时间信息。 实时时钟使用内部 OSC 作为时钟源,只要供电电压处于工作范围内,无论设备处于运行模式、低功耗模式,RTC 都可以持续工作。
功能特性
具备秒、分钟、小时(支持 12 小时或 24 小时制)、天数和年份的时间管理功能
支持夏令时补偿功能
提供数字校准功能,以补偿固定方向的偏差
提供一个带有中断功能的可编程闹钟,闹钟可通过任意时间字段的组合进行触发
可屏蔽的中断/事件类型包括:
闹钟
日期阈值
周期唤醒定时器
寄存器写保护机制
支持低功耗唤醒
误差小于 2 秒/天
低功耗工作状态
在 sleep 以及 deepsleep 的情况下,系统会定期的唤醒 XTAL 模块(系统不唤醒)来校准 RTC 的时钟源,以确保 RTC 精度在低功耗的精度。
RTC 可以在 sleep 以及 deepsleep 的情况下通过闹钟中断和唤醒定时器中断唤醒系统。
供电
实现简单的 RTC 辅助计时器,在 RTC 电路断电后,辅助计时器会基于原 RTC 时间信息继续计时。当 RTC 再次上电后需要 SW 将辅助计时器内容重新加载到 RTC 电路。
RTC 辅助计时器可以独立由 VDH_RTC 供电。
RTC 辅助计时器因时钟无法校准,无法实现 RTC 电路同等的精度。
VDH_RTC 并未在所有芯片中都有出 Pin。具体参看芯片 Datasheet。
由系统供电,没有独立供电。
由系统供电,没有独立供电。
由系统供电,没有独立供电。
由系统供电,没有独立供电。
RTC 电路及其时钟源由 VDH_RTC 供电,RTC 可以在主系统断电或复位时持续工作。
VDH_RTC 并未在所有芯片中都有出 Pin。具体参看芯片 Datasheet。
年份寄存器的处理
在 RTC 寄存器中会存储以下时间信息:
年份(从 1900 年开始)
日期(一年中的第几天)
时
分
秒
实时时钟内部没有闰年的判定,因此不能实现 day 到 year 的自动进位,需要 SW 处理。SW 可以根据闰年信息,设定 day 的阈值,当 day 到达阈值后会触发中断。
应用示例
SDK 提供了两类功能示例,帮助开发者了解和使用 RTC 功能:
mbed 示例
路径:
{SDK}\component\example\peripheral\mbed\RTC\{demo}
展示如何在 mbed 环境中实现 RTC 控制
raw 示例
路径:
{SDK}\component\example\peripheral\raw\RTC\{demo}
展示如何在无抽象层的情况下直接控制 RTC
以下是对 raw 示例功能的简要说明:
raw_rtc 演示如何设置和获取 RTC 时间;
raw_rtc_alarm 演示如何使用 RTC 闹钟中断。
备注
要了解示例支持的芯片,请查看示例路径下的 README.md
文件。
API 参考
要详细了解和使用相关 API,请参阅 {SDK}\component\soc\amebaxxxx\fwlib\include\ameba_rtc.h
。