This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Reduce nRF52832 current during connection

We've built a custom board, at power off current is 1-2uA and when connected average current is ~4.7mA. Internal DCDC is enabled, this shaved off >2mA. Other than reducing TX power, which we have yet to experiment with, is there any other way to reduce the current whilst connected?

Thanks

Parents
  • Hi,

    • Adjusting the system voltage
    • Using LFXO instead of internal RC oscillator
    • Adjusting the connection parameters(connection interval, slave latency etc)

    The Online Power Profiler sums up the different variables that affect the current consumption during a connection.

    regards

    Jared 

  • Also, I reccomend reading this blog post.

  • Thanks. The online power profiler suggests an average of 81uA, which is a long way from our observed 4.7mA. I am guessing most of the additional power consumed here is CPU. However, we aren't really doing anything – some interrupts are configured, and a timer is running to flash an LED. I use nrf_pwr_mgmt_run in the main loop, so the CPU should be able to idle, but it seems it isn't. Is there anything that could be keeping it active?

  • Hi,

    Most likely the CPU isn't staying in IDLE for a long time before it "wakes up" due to an interrupt. What kind timer are you using, the app timer library, the RTC directly, or one of the HW timers? Could you share your code which shows what interrupts you're configuring etc before sleep?

    regards

    Jared 

  • I'm using App timer v2 with RTC and GPIO interrupts. The App timer is not firing very regularly – every few hundred ms probably. However, Bluetooth connection interval is 15ms. Could it just be Bluetooth related CPU usage? The code is quite lengthy, across multiple files, and not in a project format Nordic supports (CMake). Is there any way to profile what is using CPU time?

  • Hi,

    • How are the GPIOs configured for interrupts and what event are you using? PORT or IN event?
    • What is the supply voltage at?
    • Are you using any other peripheral in your project? Some peripherals might consume current if they are not un-initialized properly. 
    • Can you confirm by using the debugger and pausing your application that it regularly enters the IDLE  __WFE() loop in sd_app_evt_wait()? Also, note that softdevice applications has to be restarted each time the CPU is halted during debugging. Otherwise the application will assert when you try to resume the application. 
    • Any timers or peripherals that you use where you write directly to the registers instead of using our drivers? 
    nrbrook said:
    Is there any way to profile what is using CPU time?

    If you're using the logger module and the pwr_mgmt lib then you try enabling NRF_PWR_MGMT_CONFIG_DEBUG_PIN_ENABLED in your sdk_config.h file. 

    regards

    Jared 

  • After a lot of trial and error I determined it was caused by this bug:

    https://devzone.nordicsemi.com/f/nordic-q-a/80636/nrfx_saadc_abort-in-saadc-api-v2

    now the average current is ~50uA which is in line with online power profiler.

    Thanks for your help, the power management CPU usage monitor was particularly helpful.

Reply Children
No Data
Related