This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

question of low power mode

Dear Nordic Guy,I'm developing with nrf51822. my costom code based on the hrs profile.and I modify the advertising timeout value to 30sec and finally, I see the a few uA current after 30sec.maybe it goes to system off mode(all clock sources off). It seems to be system off mode because my application code of rtc sw timer doesn't work. so,I found that in this case, I have to use idle mode or constant latency mode for keeping rtc 32k sw timer. Is that right? If so, Do I just use (NRF_POWER->TASKS_LOWPWR = 1) or (NRF_POWER->TASKS_CONSTLAT = 1 )? If so, where I have to insert this code? In other words, I want that rtc 32k clock keep alive for my custom code.

Parents
  • Hi,

    NRF_POWER->TASKS_LOWPWR is the default option (ie: reset value), which means that the 16M clock will be stopped when not needed. This will cause your wakeup time to be higher, compared to when using CONSTLAT. CONSTLAT will keep the 16M running while in sleep, which gives you a consistent wakeup time, but higher current consumption. For your application, there's no need to keep the 16M running in sleep mode.

    You can check if your code goes into system off by looking for this function call: sd_power_system_off();

    Most likely, it's in the function "on_ble_evt", case "BLE_GAP_EVT_TIMEOUT". To wake up on RTC instead, make sure that "power_manage" is called in your main-loop, and comment out the function call to sd_power_system_off().

    Best regards Håkon

Reply
  • Hi,

    NRF_POWER->TASKS_LOWPWR is the default option (ie: reset value), which means that the 16M clock will be stopped when not needed. This will cause your wakeup time to be higher, compared to when using CONSTLAT. CONSTLAT will keep the 16M running while in sleep, which gives you a consistent wakeup time, but higher current consumption. For your application, there's no need to keep the 16M running in sleep mode.

    You can check if your code goes into system off by looking for this function call: sd_power_system_off();

    Most likely, it's in the function "on_ble_evt", case "BLE_GAP_EVT_TIMEOUT". To wake up on RTC instead, make sure that "power_manage" is called in your main-loop, and comment out the function call to sd_power_system_off().

    Best regards Håkon

Children
No Data
Related