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

sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE) no effect on power consumption

Hello,

I am working on a wearable device and need the lowest power consumption possible. The project configuration is:

  • S132 7.2.0
  • SDK 17.0.2

The board is powered with a bench power supply which displayed current to mA resolution. I am not seeing any difference in power consumption when the DC/DC regulator is enabled. In previous projects there was a significant difference when this feature was enabled. It does not matter if it is before or after enabling the soft device/BLE.

Parents
  • Below is the code from main.c  I experience the same amount of current draw with or without the dcdc mode statement. Could any of those other modules prevent that from working>



    // Initialize power management sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE); ret_code = nrf_pwr_mgmt_init(); APP_ERROR_CHECK(ret_code); NRF_LOG_INFO("Initialization complete"); // Initialize Command Line Interface ret_code = nrf_cli_init(&m_cli_rtt, NULL, true, false, NRF_LOG_SEVERITY_INFO); APP_ERROR_CHECK(ret_code); ret_code = nrf_cli_start(&m_cli_rtt); APP_ERROR_CHECK(ret_code); advertising_start(); battery_svc_start(); while (true) { //if (data_ready && connected && !isBusy()) { // //send data. // sensor2_characteristic_update(&m_sensor_service, get_flash_result()); // data_ready = false; //} // Execute the scheduler upon waking up from an event or interrupt. nrf_pwr_mgmt_run(); // Polled execution of services nrf_cli_process(&m_cli_rtt); app_sched_execute(); //NRF_LOG_FLUSH(); }
  • No, I can't see anything in the code that should prevent DCDC from being enabled.

    Did you initialize the softdevice before this code? I see that you are not checking the return code from sd_power_dcdc_mode_set(), but the power mode looks correct, so it should return success.

    Can you read out NRF_POWER->DCDCEN at a later point in the application execution with a debugger, to see that the mode is actually being set?

    If you could also try my suggestion above, that would be helpful.

Reply
  • No, I can't see anything in the code that should prevent DCDC from being enabled.

    Did you initialize the softdevice before this code? I see that you are not checking the return code from sd_power_dcdc_mode_set(), but the power mode looks correct, so it should return success.

    Can you read out NRF_POWER->DCDCEN at a later point in the application execution with a debugger, to see that the mode is actually being set?

    If you could also try my suggestion above, that would be helpful.

Children
  • Yes, the soft device is initialized before enabling the DC-DC mode. This is done with the BLE stack is initialized.

    Verified with a debugger that NRF_POWER->DCDCEN is 0 before the call and 1 after the call.

    Should the power consumption drop immediately after the DC-DC is enabled? Where can I find a description of the operation?

    I have a Power Profiler Kit on order. It is currently back ordered. Will try when that arrives.

  • Yes, the current should drop immediately. I created a test-project to show this, which has a 3s delay at the start of main, then enable DCDC, then just busy-loops:

    int main(void)
    {
        nrf_delay_ms(3000);
        NRF_POWER->DCDCEN = 1;
    
        while (true);
    }

    The result can be seen in below capture from the PPK:

    As you can see, I marked the area where the current consumption is high is 2.962s (if I had marked the area more precise, I'm sure it would have been very close to exactly 3s).

Related