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

Help me understanding theorical power consumption of nRF52832

Hello,

We've been struggling for a while trying to understand how to interpret the nRF52832 electrical specification. Sorry if this may sound like a bad question but we really have to make sure we consider the correct values.

Based on the electrical specification, knowing that we will run our code from the FLASH with the DCDC, how many uA will the nRF52 consume if it runs at 100% (doing some dummy stuff in an infinite loop) ? Say this value is N, now if it runs only at 3%, because it doesn't have that much to do, will its current consumption be 0.03N + 0.97(sleep current) ? Or is there something else to consider ?

Just by reading the spec, I'd say N will be 3.7mA, am I wrong ? Electrical spec

In a general way, with only an application and no SoftDevice, what is the best way to calculate the real current consumption if I know how many instructions per second are executed ? Does it depend of the peripheral I use, and if so in which measure ? Would 3.7mA be the minimal current I'll see (so it's higher with all the peripherals enabled) or the maximal value ?

I know how to answer this the empirical way, but I want to understand how to estimate the current for different use cases in a first time without to actually write the code.

Note: If this questions sounds stupid or the answer seems obvious, please enlighten me and help me understanding.

  • Hi Tim

    Your question is totally relevant. Current consumption was not easily estimated on nRF51 and is even more difficult on nRF52 becuase the internal power management is more complex. I'll try to elaborate.

    You are correct, the specified number of 3.7mA is the typical current consumption of the CPU when DCDC is enabled and supply power is 3V. You can experiment with this with by running the template_project in the SDK, measuring the current consumption with or without WFE() in the main loop (__WFE() disables the CPU). Adding

    NRF_POWER->DCDCEN = 1;
    

    Enables the DCDC.

    You are also correct that average current consumption of the CPU is proportional to the utilization of the CPU, i.e. 0.03N + 0.97(sleep current) if CPU utilization is 3%.

    For peripherals, you can see the current consumption of those in the electrical specification for each peripheral in the nRF52 product specification. Those numbers are typically given for current consumption of the peripheral only without DCDC enabled. What you need to consider additionally is that 16MHz clock source is needed, usually internal 16MHz HFINT, for most peripherals (all except RTC, LPCOMP I think). There is also current consumption of internal regulators that consume current, but those currents are generally small on the nRF52, and can usually be neglected. The current consumption of the HFINT is specified to 60uA, but that number is underestimated. I see HFINT current consumption typically 200uA-500uA.

    Another thing to consider is the EasyDMA, which many peripherals use. EasyDMA consumes typically ~1.5mA when enabled. For example, the SAADC uses EasyDMA and when SAADC is enabled, it consumes ~2mA all the time, which is sum of 16MHz clock source, the SAADC perihperal and the EasyDMA. For SPIM, I understand that the EasyDMA only consumes current when SPI data transfer is ongoing, otherwise not.

    Update 18.10.2016 Usually there exist methods to decrease use of EasyDMA and 16MHz clock in order to decrease current consumption. For instance, the saadc_low_power example given here is power optimized so that SAADC is only enabled when sampling to reduce current consumption. The 16MHz clock and the EasyDMA will then only consume current when the SAADC is sampling, for 5 to 42 microseconds, depending on the SAADC acquisition time configuration. Also if you disable UART logging and set SAADC buffer size to 1 in this example, you will see current consumption of only a few microamps for sub 10Hz sampling rate.

  • Hello Stefan, thank you for this great answer and have a nice day !

Related