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

NRF52840 too high power consumption

Hi,

I know that this issue is well documented in the forum, but I have read everything and tried all of the suggested fixes, but nothing worked.

I am trying to Enter systemOFF mode and wake up from an external signal later.

when I enter systemOFF the chip draws about 60uA of power, which is way to much.

I made a small programm to test everything and found out, that using Interrupt pins will use a lot of power, but I thought, that this would only matter for systemON modes, as everything should get disabled in systemOFF mode... do I have to do anything else but

NRF_POWER->SYSTEMOFF = 1;

in order to get below 1uA?

my first thought was, that the chip may be in debug mode, but I uploaded the program, disconnected everything and then measured, and it was still that high.

my setup:

NRF52840-preview-DK + PowerProfilerKit.

Ps. when I have an empty int main() with only the systemOFF in it, I will get about 1uA power consumption, which is OK, but still strange as it should go lower?

Parents
  • Hi,

    How did you configure the wakeup pins? You should make sure that the pins are not configured in a way that will draw current through pull-ups, etc.

    Can you provide a minimal project that can be used to reproduce this issue on the DK?

    Best regards,
    Jørgen

  • I did not configure any wakeup source for testing to eliminate that issue.

    I can give you a minimal project, BUT it uses MBED to configure a Interrupt pin, as I will use mbed for my main project, the functions to power off the chip is pure nordic SDK though.. is this ok for you, or is mbed a no-go?

    also, I just found out that if I just make an instance of the InterruptIn the current will drop to 1.8uA, but if I configure its mode (pullUp/down/none) the current will stay at about 40uA.

    #include "mbed.h"
    #include "PinNames.h"
    #include "nrf_soc.h"
    
    
    InterruptIn irt(P0_13);
    void take_nap(){
        NRF_POWER->SYSTEMOFF=1;
        sd_power_system_off();      //consumes slightly less power
        while(1);
    }
    
    int main(void)
    { 
        NRF_POWER->DCDCEN = 0x00000001;
        NRF_UART0->TASKS_STOPTX = 1;
        NRF_UART0->TASKS_STOPRX = 1;
        NRF_UART0->ENABLE = 0;
        
        irt.mode(PullNone); //when using this, it will consume more power.
    
        while (true) 
        {
           take_nap();
        }
    }

    thank you for your help,

    Jonas

Reply
  • I did not configure any wakeup source for testing to eliminate that issue.

    I can give you a minimal project, BUT it uses MBED to configure a Interrupt pin, as I will use mbed for my main project, the functions to power off the chip is pure nordic SDK though.. is this ok for you, or is mbed a no-go?

    also, I just found out that if I just make an instance of the InterruptIn the current will drop to 1.8uA, but if I configure its mode (pullUp/down/none) the current will stay at about 40uA.

    #include "mbed.h"
    #include "PinNames.h"
    #include "nrf_soc.h"
    
    
    InterruptIn irt(P0_13);
    void take_nap(){
        NRF_POWER->SYSTEMOFF=1;
        sd_power_system_off();      //consumes slightly less power
        while(1);
    }
    
    int main(void)
    { 
        NRF_POWER->DCDCEN = 0x00000001;
        NRF_UART0->TASKS_STOPTX = 1;
        NRF_UART0->TASKS_STOPRX = 1;
        NRF_UART0->ENABLE = 0;
        
        irt.mode(PullNone); //when using this, it will consume more power.
    
        while (true) 
        {
           take_nap();
        }
    }

    thank you for your help,

    Jonas

Children
No Data
Related