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

Current Consumption of nRF52832

Hi,

AFAIK, the peripherals on the nRF52832 need to be explicitly enabled. If that is the case, what would be the current consumption of the chip if I program it using the below code:

#include "nrf.h"
#include <stdint.h>
#include <stdbool.h>
int main(void)
{}

I measured the current using a FLUKE 17B multimeter and it read a constant 5.47 mA. The below are my queries:

  1. Is the above current draw expected?
  2. Can someone give me a rough breakdown of the current consumption?
  3. If this is not expected, could someone point to what I might be doing wrong here?

If the use the below code:

#include "nrf.h"
#include <stdint.h>
#include <stdbool.h>
int main(void)
{
NRF_POWER->SYSTEMOFF = 1;
}

the current consumption drops to < 2 uA, which is expected.

Just to rule out the obvious, I have reset the board by power cycling and have disconnected the J-link debugger while measuring the current.

Additional Info: Using SES 3.34a with J-link Segger programmer/Debugger.

Thank you for reading.

Arish  

Parents
  • Hey arish,

    What you are measuring is the CPU idling and powered by LDO (see CPU performance). You can write the following to put the CPU to sleep and turn on the DCDC regulator (DCDC components must be available).

    #include "nrf.h"
    #include <stdint.h>
    #include <stdbool.h>
    int main(void)
    {
        NRF_POWER->DCDCEN = 1;  // Enable DCDC
        while(1)
        {
            __WFE();
            __SEV();
            __WFE();    // Puts the CPU to sleep
        }
    }

    Cheers,

    Håkon.

  • Hi Håkon,

    Thank you for your prompt response. I am aware of the 'System ON' sleep mode you suggested and have been using it successfully :) I have also used the DCDC mode previously and have further reduced the CPU idling current to 2.95 mA. What I am interested in is the current consumed when the chip comes out of the sleep mode. I feel that even with DCDC enabled, 2.95 mA (idle current) is on the higher side with no softdevice programmed. I haven't worked with ARM Core M4 device before but saw an idle current of ~200 uA in one of the posts on this forum. 

    Just curious, shouldn't the System ON sleep code be the below:

    #include "nrf.h"
    #include <stdint.h>
    #include <stdbool.h>
    int main(void)
    {
        NRF_POWER->DCDCEN = 1;  // Enable DCDC
        while(1)
        {
            __SEV();
            __WFE();
            __WFE();    // Puts the CPU to sleep
        }
    }

    Arish

  • You should see 1.2µA after WFE-SEV-WFE (System ON). This case you referred to was an issue where the FPU unit did not turn off automatically when entering SystemON/OFF, the fix is to manually turn off the FPU before entering sleep. This is not the issue in your case. 

    2.95 mA is the CPU idling (infinite loop), this means that your device does not enter sleep.  

     

     

  • Are you saying it's quite normal to have 2.95 mA as the CPU idle current? What could be the clock source for the CPU when I am not enabling the HFCLK explicitly? Are there any other peripherals contributing to this current?

  • Idle is not the same as sleep. 2.95mA for a cortex M4-F running at 64MHz is actually really low. The HFCLK clock tree and the power management system is contributing to the current consumption. 

    Have you manage to put the CPU to sleep yet?

Reply Children
Related