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