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

nRF52832 current consumption issues

Dear all,

Working with nRF52832 (currently without SoftDevice), and there some issues regarding the project current consumption that we need to understand:

1) In the PS (v1.1) documentation, in section 7.2.1 "CPU performance", there is a current definition

of IDDFLASHDCDC/MHz that can be as low as 58uA/MHz.

The current consumption in our project was dropped from 5.5mA to 3.5mA, but still, it's far from the expected current of 0.928mA (=58nA * 16), what else should be done/configured to achieve this goal?

2) In our low power SAADC module, we set tACQ (Acquisition time) to 40usec and tCONV (Conversion time) to 2usec, once again, in the PS (v1.1) documentation, the IADC,CONV current definition is 700uA, we want to know that it refers to the time frame of 42usec and the current will be in idle mode otherwise, and if this isn't the case is there a way to configure it to that time frame only? 

3) In the low power SAADC module, we use an easyDMA, and the current consumption is about 1.5mA, is there a way to reduce that?

In other words, to make sure that the easyDMA is in idle state during the time between samples?

Thanks in advance,

Amir.

  • First thing before you do any current consumption test is to put the mcu to sleep without doing or activating anything else.  This means in the main() just do a while (1) { __WFE(); }, nothing else.  Compile in release mode.  Then measure how much current, (no debugger or jtag connected).  The current should be less than 10uA.  Anything higher than that means you have hardware leaks in your design.  Then you active one by all your io to find out where which i/o leaks more.   

    This example here https://github.com/I-SYST/EHAL/blob/master/ARM/Nordic/exemples/TPHSensorTag.cpp reads temperature, humidity, pressure and gas from the BME680, ADC to read battery level and advertises them over BLE.  The average current is around 15uA.  

  • Hi,

     's answer is important. I have some additional comments (linked to your numbered questions):

    1) The CPU frequency of the nRF52832 is always 64 MHz, so your calculation is not correct. It is essentially the same number as IDDFLASHCACHEDCDC (3.7 mA).

    2) The current consumption numbers given for the SAADC (and other peripheral) only reflect the current consumption of the peripheral itself, not any resources it depends on. So the IADC,CONV number of 700 μA does not include the current consumption of the clocks, regulator or DMA logic. Therefore, the total current consumption is significantly higher. The system will consume significant amounts of power between sampling as well, as these resources are constantly enabled while the SAADC peripheral is enabled.

    3) The best way to reduce the SAADC current consumption is to minimum between sampling is to disable the SAADC peripheral, provided that you do not need to use it frequently or have a very accurate sampling rate.

Related