杰里AC632系列RTC定时唤醒

杰里AC632系列RTC定时唤醒方法

进入软关机状态,然后定时若干秒唤醒,代码如下:

c 复制代码
在这里插入代码片
static void board_devices_init(void)
{
#if TCFG_PWMLED_ENABLE
    pwm_led_init(&pwm_led_data);
#endif

#if (TCFG_IOKEY_ENABLE || TCFG_ADKEY_ENABLE || TCFG_TOUCH_KEY_ENABLE)
	key_driver_init();
#endif

#if TCFG_CHARGE_ENABLE
    charge_api_init(&charge_data);
#else
    /* CHGBG_EN(0); */
    /* CHARGE_EN(0); */
#endif

#if TCFG_RTC_ALARM_ENABLE
    alarm_init(&rtc_data);
    rtc_alarm_set_timer(10);// 设置10秒闹钟
    power_set_soft_poweroff();
#endif

}

这个非常简单,初始化一下闹钟,然后设置多少秒之后醒来。然后直接软关机等待时间到了会自动醒来。这个适合间隔时间长的唤醒,比如一分钟一次,醒来一次只工作判断是否需要开启蓝牙工作还是继续睡觉软关机。

因为这种操作是每次启动后重新开始运行程序,芯片要先经过ROM和TRIM以及外设的初始化,这个过程大概耗时100多ms,这期间电流比较大的,导致平均功耗会升高。比如我实际测试的10s唤醒一次,平均待机电流要到130uA。这种对电池供电来说几乎不可忍受。

短时间的RTC固定唤醒,还是要加一个辅助小MCU合适。由小MCU执行RTC唤醒任务,然后判断达到工作条件了才开启AC632芯片的供电,这样可以极致压缩功耗,待机电流可以达到4uA以下。如此操作就是增加了一颗辅助MCU,增加了PCB成本。但是从延长设备待机时长来说,优势还是非常大的。

假设AC632进入低功耗状态,1s一次广播,平均电流16uA。使用小的辅助MCU可以把待机时间延长4倍。

这样操作的缺点是待机时蓝牙完全关闭了,不会有广播信号,外部设备无法扫描到并建立连接。所以这种操作使用范围有限,对要求极端低功耗的传感器终端合适。