络达1562系统,若要在耳机充电充满后进行电池检测工作,可以在耳机充满后,读取电池ADC。耳机充满后,会进入系统深度睡眠,只能通过RTC去唤醒,耳机唤醒开机后,读取ADC,读取完毕,毫秒级别处理后立刻恢复深度睡眠,防止耳机开机。
这里涉及RTC启动的设置。
系统在进入深度睡眠时,进入void port_sleepMode(int xExpectedIdleTime)。
通过判断标识确定是否启动RTC
if(rtc_config.enable)
{
hal_rtc_set_alarm_by_second(rtc_config.timer_s);
hal_rtc_enable_alarm();
}
rtc_config.enable通过配置工具设置总开关,程序在运行中可以动态设置这个使能标识。
配置工具设置
RTC设置了20S后唤醒,唤醒后系统启动会调用
void APP_ChgBat_CheckCurrentBatLevel(void)
在里面读取电池ADC电压
vBat_volt =pmu_auxadc_get_channel_value(PMU_AUX_VBAT);
需要注意的是:
1562在充电时系统是不会进RTC mode的,也就不存在rtc alam
只有当电池充满后才会进入RTC mode,
而当系统进入RTC mode,相当于系统关机,ADC不能再工作,此时不能读取ADC,必须先唤醒。