
杰里AC632系列RTC定时唤醒方法进入软关机状态然后定时若干秒唤醒代码如下在这里插入代码片staticvoidboard_devices_init(void){#ifTCFG_PWMLED_ENABLEpwm_led_init(pwm_led_data);#endif#if(TCFG_IOKEY_ENABLE||TCFG_ADKEY_ENABLE||TCFG_TOUCH_KEY_ENABLE)key_driver_init();#endif#ifTCFG_CHARGE_ENABLEcharge_api_init(charge_data);#else/* CHGBG_EN(0); *//* CHARGE_EN(0); */#endif#ifTCFG_RTC_ALARM_ENABLEalarm_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倍。这样操作的缺点是待机时蓝牙完全关闭了不会有广播信号外部设备无法扫描到并建立连接。所以这种操作使用范围有限对要求极端低功耗的传感器终端合适。