nrf5340 System ON sleep current

Hi,

We are trying to optimize our sleep current on a product based on the nrf5340.  When the product is off, the nrf5340 needs to continue servicing a 1 second RTC interrupt to keep track of calendar time.

We've confirmed that the current draw from the battery is correct when completely powering down the micro in System Off mode.  However, in System ON mode, with the watchdog, RTC and SRAM enabled, we seeing about 10uA more current than expected.  If we power down sections of SRAM on the application core that are not used while the product is powered off, the current drops to the expected value.

The below code changes are required to reduce the product current consumption by 10uA.

NRF_VMC->RAM[0].POWER = 0x0001;
NRF_VMC->RAM[1].POWER = 0;
NRF_VMC->RAM[2].POWER = 0x8000;
NRF_VMC->RAM[3].POWER = 0xFFFF;
NRF_VMC->RAM[4].POWER = 0;
NRF_VMC->RAM[5].POWER = 0;
NRF_VMC->RAM[6].POWER = 0x8000;
NRF_VMC->RAM[7].POWER = 0;

Does SRAM consume this much current?

Thank you
  • Hi Kurt, 

    Our expert in supporting current consumption measurement is currently away and will be back in about 10 days.

    In the mean time could you please let us know what's the actual current consumption you measured ? 
    Also if you can send us your test code to take a look, that would be nice. I assume you are using nRF Connect SDK, could you tell the version ? 

    I don't have the measurement for nRF53 but on the nRF52, as far as I know, turning of 4kB block of RAM can reduce current consumption from 20nA to 40nA. 
    If you take a look at this case: Turning off unused RAM to get minimum power consumption. 

    I got about 1.6uA dropped when turned off most parts of the 256kB RAM of the nRF52840. In the case of nRF53 it's 512kB but 10uA seems to be quite high. 

  • The current consumption dropped from 31 uA to 21 uA of which 18uA is powering external circuitry.  I have attached the routine which is putting the 5340 into low power mode and periodically waking up once a second to service calendar time.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    void iohdw_enter_backup_mode( void )
    {
    UINT8_T temp8;
    ERRCODE_T iodig_error;
    /* Disable QSPI */
    //NRF_CACHE->ENABLE = 0x00000000;
    nrf_qspi_xip_set(NRF_QSPI, false);
    nrf_qspi_task_trigger(NRF_QSPI, NRF_QSPI_TASK_ACTIVATE);
    nrfx_qspi_uninit();
    NRF_QSPI->PSEL.SCK = 0x80000000;
    NRF_QSPI->PSEL.CSN = 0x80000000;
    NRF_QSPI->PSEL.IO0 = 0x80000000;
    NRF_QSPI->PSEL.IO1 = 0x80000000;
    NRF_QSPI->PSEL.IO2 = 0x80000000;
    NRF_QSPI->PSEL.IO3 = 0x80000000;
    NRF_QSPI->ENABLE = 0;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    .

  • Hi Kurt, 

    Do you have a Dev Kit to do cross check if the current consumption on the DK is the same. 

    I did a quick test with the blinky example (NCS v2.4.0) which use RTC and I can see that if I don't turn off RAM it will be around 2.8 uA sleep current. 
    And if I turn off RAM retention using

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    NRF_VMC->RAM[0].POWER = 0x00FF;
    NRF_VMC->RAM[1].POWER = 0;
    NRF_VMC->RAM[2].POWER = 0;
    NRF_VMC->RAM[3].POWER = 0;
    NRF_VMC->RAM[4].POWER = 0;
    NRF_VMC->RAM[5].POWER = 0;
    NRF_VMC->RAM[6].POWER = 0;
    NRF_VMC->RAM[7].POWER = 0;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    I can see the current consumption dropped down to 1.4uA which matched with the calculation in my last reply. 

    blinky_ram.zip

  • Hi Hung,

    Are you running this example on the nrf5340 dev kit?

  • Hi Kurt, 
    Yes, it was tested on nRF5340 devkit.