你好,
我一直在DA14682和DA14681上使用Hibernation函数进行一些测试。
我一直在使用电源测量文档中指定的BLE-ADV示例。我已将睡眠模式更改为“PM_Mode_Hibernation”。
当设备位于DA14681基本开发套件上时,我正在测量大约192UA的电流。
在我们的生产PCB上,我正在测量大约200UA的睡眠电流。
在我看来,有些东西不会完全睡觉,闪光灯可能?有任何想法吗?
提前致谢。
嗨point85,
一般来说,为了将系统放入休眠模式,您应该确保:
任何上述陈述都将阻止系统休眠,因此将发生冷启动。您可以在BLE_PERITIVELALAL示例的BLE_PERITALL_TASK.C中执行以下修改。
1.设置OS_TIMER(),以便在15秒后停止广告:
privileged_data静态os_timer hiberbation_timer;静态void hiberbation_timer_cb(os_timer timer){ble_gap_adv_stop();}
2.在ble_peripheral_task中启动计时器:
/ *在15sec * / hiberbation_timer = os_timer_create(“hibernate”,os_ms_2_ticks(15000),os_timer_fail,(void *)os_get_current_task(),hiberbation_timer_cb)之后创建计时器。os_assert(hiberbation_timer);os_timer_start(hiberbation_timer,os_timer_forever);
3.在定时器到期时,广告将停止,因此将触发Handle_evt_gap_adv_Completed(),系统将进入休眠状态。
静态void handle_evt_gap_adv_Completed(ble_evt_gap_adv_completed_t * evt){ble_reset();hw_cpm_trigger_sw_cursor();pm_set_sleep_mode(pm_mode_hibernation);}
谢谢,PM_DIALOG.
嗨point85,
一般来说,为了将系统放入休眠模式,您应该确保:
任何上述陈述都将阻止系统休眠,因此将发生冷启动。您可以在BLE_PERITIVELALAL示例的BLE_PERITALL_TASK.C中执行以下修改。
1.设置OS_TIMER(),以便在15秒后停止广告:
2.在ble_peripheral_task中启动计时器:
3.在定时器到期时,广告将停止,因此将触发Handle_evt_gap_adv_Completed(),系统将进入休眠状态。
谢谢,PM_DIALOG.