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

Low Power Mode

Hello everyone,

I am developing a ble device and cant get under 7mA.

For test i used example application. BLE Beacon example. And the hardware part is realy basic. Only nRF52832, external crystall (HF and LF), pcb type antenna. Witch https://www.direnc.net/nrf52832-42-bluetooth-modul

The main is:

int main(void)
{
    // Initialize.
    log_init();
    timers_init();
    leds_init();
    ble_stack_init();
    advertising_init();
    advertising_start();

    // Start execution.
    NRF_LOG_INFO("Beacon example started.");

    // Enter main loop.
    for (;; )
    {
        if (NRF_LOG_PROCESS() == false)
        {
            power_manage();
        }
    }
}

How can i get lower current consumption? What should i do?

Parents
  • You should turn off all debug logging. So ideally it won't be necessary to reference it in your for loop. I think logging will keep the uart or rtt open.

    In main before the infinite loop but after you init the SD,  you need to call:

    		err_code = sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE);
    		APP_ERROR_CHECK(err_code);
    		err_code = sd_power_mode_set(NRF_POWER_MODE_LOWPWR);
    		APP_ERROR_CHECK(err_code);

    If you don't have the DCDC hooked up then lose that bit.  This is for sdk 11, but I don't think it has changed much.

    For most applications the infinite loop is just a call to power_manage, but you can use it for general housekeeping too.  Just make sure to call power manage again when you are done.

Reply
  • You should turn off all debug logging. So ideally it won't be necessary to reference it in your for loop. I think logging will keep the uart or rtt open.

    In main before the infinite loop but after you init the SD,  you need to call:

    		err_code = sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE);
    		APP_ERROR_CHECK(err_code);
    		err_code = sd_power_mode_set(NRF_POWER_MODE_LOWPWR);
    		APP_ERROR_CHECK(err_code);

    If you don't have the DCDC hooked up then lose that bit.  This is for sdk 11, but I don't think it has changed much.

    For most applications the infinite loop is just a call to power_manage, but you can use it for general housekeeping too.  Just make sure to call power manage again when you are done.

Children
No Data
Related