你好,
我在DA14682和DA14681上做了一些关于休眠功能的测试。
我一直在使用功率测量文档中指定的布勒-adv示例。我已经将睡眠模式改为“pm_mode_hibernate”。
当DA14681基本开发套件上的设备处于休眠状态时,我测量的电流约为192uA。
在DA14682的生产PCB上,我测量的睡眠电流约为200uA。
在我看来,有些东西无法完全入睡,可能是闪光?什么好主意吗?
提前谢谢。
嗨point85,
一般来说,为了让系统进入休眠模式,你应该确保:
上面的任何语句都将阻止系统休眠,因此将发生冷启动。您可以在ble_peripheral示例的ble_peripheral_task.c中进行以下修改。
1.设置一个OS_TIMER()以在15秒后停止广告:
PRIVILEGED_DATA static OS_TIMER hibernation_timer;static void hibernation_timer_cb (OS_TIMER timer) {ble_gap_adv_stop();}
2.在ble_peripheral_task中启动定时器:
/*创建15秒后进入休眠的定时器*/ hibernation_timer = OS_TIMER_CREATE("hibernate", OS_MS_2_TICKS(15000), OS_TIMER_FAIL, (void *) OS_GET_CURRENT_TASK(), hibernation_timer_cb);OS_ASSERT (hiberbation_timer);OS_TIMER_START (hiberbation_timer OS_TIMER_FOREVER);
3.计时器到期时,广告将停止,因此handle_evt_gap_adv_completed()将被触发,系统将进入休眠状态。
Static 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_peripheral示例的ble_peripheral_task.c中进行以下修改。
1.设置一个OS_TIMER()以在15秒后停止广告:
2.在ble_peripheral_task中启动定时器:
3.计时器到期时,广告将停止,因此handle_evt_gap_adv_completed()将被触发,系统将进入休眠状态。
谢谢,PM_Dialog