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

How optimize high current consumption in sleep mode using nRF52840?

Hello to all,

We have developed our application & the following platform we are using:

  • SDK 15.0, Segger IDE on windows PC
  • Softdevice version is 6.0.0
  • Hardware version nRF52840 SoC.
  • Our product is battery operated, so high power consumption is serious an issue for us.

In our application we have used ble_app_uart example with SAADC because our sensor is analog. We also made custom PCB using nRF52840 and it working well not an issue. But our problem is very too much high current consumption is sleep mode means system OFF mode.

Here is below measured analysis with the help of Nordic Power Profile kit:

  1. The average current consumption while advertising is 962uA - 1.62mA I think this is OK.
  2. The average current consumption when sensor device enter into sleep mode is 562uA (Which is very high)

We have disabled all used peripheral before enter device into sleep mode as like below:

void sleep_mode_enter() {
  uint32_t err_code;
  NRF_LOG_INFO("Sleep mode Enter");
  flash_data_sending = false;
  start_measurement = false;
  nrf_gpio_pin_clear(SENSOR_PIN);  // OFF Sensor
  nrf_gpio_pin_set(GREEN_LED_PIN); // OFF Green LED
  nrf_gpio_pin_set(BLUE_LED_PIN);  // OFF BLUE LED
  stop_adc();
  err_code = app_uart_close();
  APP_ERROR_CHECK(err_code);
  NRF_LOG_INFO("UART close: %d", err_code);
}

void stop_adc() {
  nrf_drv_timer_disable(&m_timer);
  nrf_drv_timer_uninit(&m_timer);
  nrf_drv_ppi_channel_disable(m_ppi_channel);
  nrf_drv_ppi_uninit();
  NRF_SAADC->TASKS_STOP = 1;
  nrf_drv_saadc_uninit();
}

We have tested our hardware and sure this not hardware problem because when our device enter into deep sleep mode system OFF that time the current consumption near about 0.7uA to 1uA. Even when our designed firmware upload into nRF52840 DK and measured consumption using PPK that time got same results.

Questions:

  1. Why this too much very high power consumption getting in sleep mode?
  2. Is any wrong in our sleep mode enter function and disabled module functions?

Will you please suggest any solution, We should need to optimize this consumption to increase battery life because our sensor devices is battery operated.

Looking forward your response..!!

Thanks in advanced..!! 

  • Hi

    Please read more on the sd_power_system_off function here. I don't know if you are using UART or UARTE. That depends on what you are using and what defines and includes you have in your application.

    Best regards,

    Simon

  • Hi,

    But RTC0 is reserved for soft-device activities we can not be use for nrf_calendar library Is this right? Can I change softdevice RTC0, I can use RTC0 for nrf_calendar to work in system OFF mode. If yes How? I have tried to put device in system OFF mode but my device not wake up as predefined time scheduler.

    I have read system OFF mode in details,  when device will wake up from system OFF mode the system is reset If system reset we can not be put device into system OFF mode. Because when reset OR power ON/OFF we have done other functionality. 

    So we need to find solution for UART ON OFF to save battery life.

    Thanks...... 

  • Hi

    Let's forget about system OFF mode. You are right, and it can't be used for this application, sorry for confusing you. Seeing as you have built your project on the ble_app_uart example, which uses UART, not UARTE. You should go through your project and make sure you are using only UART in your functions. This also means that you probably won't need the workaround for the uart to disable correctly. This post explains how that workaround works, and in what instances it may help, so have a look at it for more insight.

    Next, this post explains every conventional way to reduce current consumption, so I suggest you read that to see if you've missed anything to help your application below 5uA.

    After you've done this, see that your application runs properly, and please update me.

    Best regards,

    Simon

  • Hi

    Let's forget about system OFF mode. You are right, and it can't be used for this application, sorry for confusing you. Seeing as you have built your project on the ble_app_uart example, which uses UART, not UARTE. You should go through your project and make sure you are using only UART in your functions. This also means that you probably won't need the workaround for the uart to disable correctly. This post explains how that workaround works, and in what instances it may help, so have a look at it for more insight.

    Next, this post explains every conventional way to reduce current consumption, so I suggest you read that to see if you've missed anything to help your application below 5uA.

    After you've done this, see that your application runs properly, and please update me.

    Best regards,

    Simon

  • Simonr it was my understanding that RTC does NOT work in system OFF mode. Unless something has changed the only exits paths from System Off are: 

    1. The DETECT signal, optionally generated by the GPIO peripheral
    2. The ANADETECT signal, optionally generated by the LPCOMP module
    3. The SENSE signal, optionally generated by the NFC module to “wake-on-field”
    4. A reset

     

Related