6. 虚拟RTC(软件RTC)
6.1. 简介
AW30N从v1.1.0版本开始新增了虚拟RTC(软件RTC)功能,支持选择LRC、32K晶振以及BTOSC作为时钟源,支持读写时钟、读写闹钟powerdown状态下计时等功能。详细功能支持情况如下表
功能
LRC
32K晶振
BTOSC
读写时钟
支持
支持
支持
读写闹钟
支持
支持
支持
powerdown状态计时
支持
支持
支持
softoff状态下计时
支持
支持
不支持
复位保持RTC时钟
支持
支持
支持
备注
软件RTC使用注意事项如下
复位保持RTC时钟不包含上电复位!!!
暂不支持softoff定时唤醒和闹钟复用。
软件RTC使用32位变量保存lp_timer的cnt值,因此在powerdown或者softoff状态下长时间运行下会出现溢出现象,流程中为了防止溢出而做了自动唤醒处理。如果芯片在初始化RTC后立刻进入低功耗状态,那么其在不同时钟源下的最长自动唤醒时间为下表中数据所示
如果芯片在初始化RTC后运行待机一段时间后再进入低功耗休眠,则 自动唤醒的时间 = 最大自动唤醒时间 - 运行待机时间
时钟源
最长自动唤醒时间
LRC
5.96小时
32k晶振
37.28小时
BTOSC
178.9秒
6.2. 虚拟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 本次软关机唤醒不是闹钟唤醒