RTC 使能与停止
RTC 上电后立即启动,不可关闭,软件应在32K 晶体振荡器完全起振后再设置当前时间;在晶体振荡器起振之前芯片使用内部环振计时,偏差较大。
RTC 时间设置
软件可以在任意时刻直接设置RTC 时间寄存器;由于设置时间寄存器的操作与RTC 走时为异步操作关系,建议软件在秒中断事件之后进行时间设置,并且在置时后读出时间值校验。
同时FM33A048B 支持ms 级授时,即可以设置时间到3.9ms 级别精度(1/256s)。此外,当软件写入秒时间时,硬件自动清零64Hz->1Hz 的秒内计数器,以便实现秒对齐。
为了提高抗干扰能力, FM33A048B 提供时间写保护功能, 必须先对写保护寄存器写入0xACACACAC,才能改写时间寄存器,置时完成后软件可以通过写入任意其他值来禁止时间寄存器的写入,恢复写保护。
RTC 时间读取
时间读取方式1:
⚫ 读当前时间寄存器值
⚫ 再次读当前时间寄存器值
⚫ 如果2 次读取内容一致,则为正确的当前时间;如果两次读取内容不一致,则重复前两个步骤。
时间读取方式2:
软件在1s 中断发生后立即读取时间寄存器,能保证读到正确的当前时间值。
RTC 时间戳
为了支持Tamper Detection,RTC 支持外部IO 事件触发的时间戳功能。外部IO 触发源为PB4 和PB5的输入电平变化,为了确保输入检测的可靠性,建议使能PB4 和PB5 的IO 输入数字滤波。使用此功能时,将PB4 和PB5 配置为GPIO 输入,打开RTCSTAMPEN 寄存器,当PB4 和PB5 上出现任何滤波后的上升沿或下降沿时,RTC 会自动记录当前时间到STAMP 寄存器组中,同时产生相应的标志,可用于产生中断或者供软件查询。
注意时间戳功能仅在休眠模式下有效,ACTIVE 和LPRUN 模式下时间戳功能不起作用,IO 边沿检测由软件中断来处理。
时间戳仅在相应标志寄存器为0 的情况下记录事件发生时间,如果对应标志已经为1,则忽略相应事件。因此如果有多次事件发生,时间戳仅记录第一次事件发生的时间,除非软件在事件发生后清除了标志寄存器。
自动温度补偿
FM33A048B支持 RTC 自动 温度补偿,补偿原理是定时( 256s )启动一次温度传感器,根据温度传感器的输出计算 RTC 调校值,实现每 256s 更新一次 RTC 调校值。
芯片预先在Flash 的 NVR 扇区保存了 512 字节的温补参数,芯片上电后软件需要从 NVR 中读取数据并载入地址从 0x40011200 开始的 RAM 中。 这部分 RAM 在软件不启动自动温补的情况下,可以作为普通 RAM 使用,在启动自动温补的情况下,软件无法访问。在自动温度补偿的情况下,当 XTLF 停振时,将禁止自动温补 。自动温补电路 在启动时将独 占 ADC应当确保在启动自动温补前, ADC 未被 使能 。
自动温度补偿的具体使用方法,请参考复旦微电子提供的库函数。