6. 虚拟RTC(软件RTC)

6.1. 简介

AW30N从v1.1.0版本开始新增了虚拟RTC(软件RTC)功能,支持选择LRC、32K晶振以及BTOSC作为时钟源,支持读写时钟、读写闹钟powerdown状态下计时等功能。详细功能支持情况如下表

功能

LRC

32K晶振

BTOSC

读写时钟

支持

支持

支持

读写闹钟

支持

支持

支持

powerdown状态计时

支持

支持

支持

softoff状态下计时

支持

支持

不支持

复位保持RTC时钟

支持

支持

支持

备注

软件RTC使用注意事项如下

  1. 复位保持RTC时钟不包含上电复位!!!

  2. 暂不支持softoff定时唤醒和闹钟复用。

  3. 软件RTC使用32位变量保存lp_timer的cnt值,因此在powerdown或者softoff状态下长时间运行下会出现溢出现象,流程中为了防止溢出而做了自动唤醒处理。如果芯片在初始化RTC后立刻进入低功耗状态,那么其在不同时钟源下的最长自动唤醒时间为下表中数据所示

  4. 如果芯片在初始化RTC后运行待机一段时间后再进入低功耗休眠,则 自动唤醒的时间 = 最大自动唤醒时间 - 运行待机时间

时钟源

最长自动唤醒时间

LRC

5.96小时

32k晶振

37.28小时

BTOSC

178.9秒


6.2. 虚拟RTC配置参数

"虚拟rtc配置“

虚拟rtc配置


6.3. 虚拟rtc运行功耗

虚拟rtc的运行功耗可参考表中数据,以下数据的测试环境为开发板,3.7V供电:

运行状态/时钟源

不运行RTC

LRC

32K晶振

BTOSC

待机

5.306mA

5.311mA

5.308mA

5.472mA

powerdown

40.46uA

40.69uA

41.85uA

906uA

softoff

2.25uA

14.92uA

11.07uA

不支持

softoff(定时唤醒)

14.92uA

14.92uA

11.08uA

不支持


6.4. 相关函数介绍

6.4.1. 函数void rtc_dev_init(const struct rtc_config_init *rtc)

该函数实现rtc配置初始化,初始化完成后rtc开始走时。

6.4.2. 函数void read_current_time()

该函数实现读取rtc时间并加以打印,用户可通过其内部调用的rtc_read_time函数的参数获取具体的rtc时间

6.4.3. 函数void write_clock_time(u16 year, u8 month, u8 day, u8 hour, u8 min, u8 sec)

该函数实现修改rtc时间。
①u16 year : 年
②u8 month : 月
③u8 day : 日
④u8 hour : 时
⑤u8 min : 分
⑥u8 sec : 秒

6.4.4. 函数void read_alarm_time()

该函数实现读取闹钟时间并加以打印,用户可通过其内部调用的rtc_read_alarm函数的参数获取具体的闹钟时间。

6.4.5. 函数void write_alarm_time(u16 year, u8 month, u8 day, u8 hour, u8 min, u8 sec)

该函数实现修改闹钟时间
①u16 year : 年
②u8 month : 月
③u8 day : 日
④u8 hour : 时
⑤u8 min : 分
⑥u8 sec : 秒

6.4.6. 函数void set_time_wakeup_soff(u32 clk_sel, u32 sec)

softoff定时唤醒配置,开启rtc功能时,需要将rtc配置中的timer_wkup_en置1,才可保持RTC时间(仅支持LRC和32K晶振时钟源)。其中参数:
clk_sel为时钟源;
sec单位:ms;

6.4.7. 函数void time_wakeup_soff_disable(void)

该函数实现将定时唤醒失能。

6.4.8. u32 rtc_get_alm_wkup(void)

备注

该函数用于soffoff唤醒后,判断是否为闹钟唤醒,调用位置需要在power_early_init之前。其中参数

1.返回值:
1 本次软关机唤醒为闹钟唤醒
0 本次软关机唤醒不是闹钟唤醒