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.

  • Hi,

    • What voltage level is the board powered by? The DCDC regulator will affect the current consumption less if the supply voltage is closer to the minimum supply voltage of 1.7 V.
    • What is the measured current consumption? The DCDC regulator will be automatically controlled by the chip, depending on the current draw. It will only be enabled when the current draw is high enough for the DCDC regulator to be more efficient than LDO.
    • I assume that the board is populated with the required components for the DCDC regulator?

    Best regards,
    Jørgen

  • Hello,

    • The input voltage is 4V battery to a 3.3V LDO
    • The current according to my power supply is 8mA@4V or 32mW
    • The board is using the Rigado BMD-350 nRF52832 SoC. According to the datasheet the module includes the inductors for the DC/DC converter

    Is there anything besides the inductors required to support the DC-DC converter?

  • No, only the inductors should be needed to use the DCDC converter. Can you try to enable DCDC at the very beginning of main(), before enabling the softdevice, using the following line?

    NRF_POWER->DCDCEN = 1;

    Is the current static at 8 mA? If you are entering sleep mode, the current should change depending on the state of the CPU/radio/etc.

    Did you use the same method for measuring current on previous board? I would highly recommend the nRF Power Profiler Kit, to measure the current in real-time. This will allow you to see graphs of the current consumption in your firmware at any point of timer.

  • 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.

Related