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

power management

hi,

i am working with nrf52832. system on sleep mode is working ok in ble_app_uart example  by commenting " //err_code = sd_power_system_off();
//APP_ERROR_CHECK(err_code);" in sleep_mode_enter(). when i am working with beacon  example  system on sleep mode is  not working. it takes 1 ma current

Parents Reply Children
  • i don't want system in deep sleep mode. i want to run it in SYSTEM ON SLEEP mode. i want to know when i call _WFE system goes in "system on sleep" or not. if not can you tell me how i can do it.

  • You mentioned in your main description that the system is going to sleep in ble_app_uart and not in your beacon example? what do you mean by that? Did you measure power consumption on both and see that your beacon is taking much more power than you think it should?

    Is the beacon advertising while you are measuring power?

    Please read this thread understand the different sleep modes you can have on nRF52 devices

  • 1. in ble_uart_example system goes to "system off sleep" ,mode after the completion of advertising duration.but what i did. i just commented "sd_power_system_off(deep sleep)" in sleep_mode_enter() declaration. now system working on "system on sleep" mode. rtc is working in sleep mode. and current is in uA.

    2. in beacon example . beacon advertisement is continues(never timerout). i have changed  duration to 500 to set 5 sec advertisement timer

    m_adv_params.properties.type = BLE_GAP_ADV_TYPE_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED;
    m_adv_params.p_peer_addr = NULL; // Undirected advertisement.
    m_adv_params.filter_policy = BLE_GAP_ADV_FP_ANY;
    m_adv_params.interval = NON_CONNECTABLE_ADV_INTERVAL;
    m_adv_params.duration = 500;// 0; // Never time out.

    as i see idle_state_handle() is called in for(;;). so it should go to system on sleep mode after advertisement duration. is there any wrong step i did. current is approx 1mA

  • Hi, 

    Duration of advertisement will not influence the power consumption average while measuring the device when it is advertising. Radio operation is power intense and the advertising interval set to 100ms in beacon example (NON_CONNECTABLE_ADV_INTERVAL) gives the average power around 750-850uA average. If you change the NON_CONNECTABLE_ADV_INTERVAL from 100ms to 500ms, you can see that the average power drops from 750uA to around 500uA.

    You can still change the program for beacon to go to deep sleep after the advertising timeout and call sd_power_system_off after configuring a wakeup source. You will then notice much less power consumption after advertisement timeout happened. 

  • if you change the NON_CONNECTABLE_ADV_INTERVAL from 100ms to 500ms, you can see that the average power drops from 750uA to around 500uA.

    my hardware is consuming 1mA current when no advertising. i want to run the "system on sleep"

    so i enabled rtc interrupt and called _WFE in for(;;);

Related