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

Power Consumption Issue

I have inherited some code that is production after doing some extensive testing on battery life have noticed that after writing to the flash my power consumption on the Nordic Power profilier increases from approx 20 micro amps to 3 milli Amps, this occurs approx 30 seconds after the write operation.

This has been confirmed by a restart counter to the flash to keep a track of how many times the product has restarted.  With no other operations occurring I can see the power increase after 20-30 seconds.  Removing this code the power level returns to normal

We are using the SDK Version 2 and am reluctant to move to version 6 unless we know that a fix exists for this issue.

I have checked the code and can see that the process is 

errorCode = sd_flash_page_erase( absolutePageNumber );    // Clears the current page

errorCode = sd_flash_write( address, headerData, HeaderLength / sizeof( uint32 ) );   // Writes a header to the page

errorCode = sd_flash_write( address, reinterpret_cast<const uint32*>( data ), length / sizeof( uint32 ) );   // Write configuration data to the page

After each of these requests the code polls for the NRF_SOC_EVTS event and checks whether the operation has been successful, every time it reports success

Has anyone seen anything similar?

  • I have attempted to restart the product after notifying that the write been successful.  

    Immediately and after 30 seconds this seems to have had no effect

  • Sorry to add but the other thing that I can see if I remove the batteries until all the power has drained and then re-insert the batteries then the power level stays at 20 uA

  • Hi NordJus, 

    I have not seen issues where calling the sd_flash- API leads to increased current consumption 20-30 seconds after the call has returned and the NRF_EVT_FLASH_OPERATION_SUCCESS event has been received. 

    If the current consumption still increases after 20-30 after you have reset the chip after calling sd_flash_write(), then there must be something else going on. 

    Which SDK version are you using? If you are using S132 v2.x.x, then my guess is SDK v11.0.0`?

    3mA is quite a lot of current so that could indicate the CPU is running and not going to idle(i.e. sleep). However, the current consumption numbers only fit if you're using the DCDC 

    CPU current, running from flash, cache enabled, DCDC 3V      3.7 mA

    Best regards

    Bjørn

  • Hi Bjorn

    Currently the product is supplied using a AAA battery (1.5V) with a step-up regulator to 3V.  I have just checked and the product us using DCDC.

    We are using SDK v11.0.0. 

    Just to be clear the increased current consumption occurs 20-30 seconds after the write has been completed and will stay in that level onwards (there is no increase after the write has been completed)

    Just removing the sd_flash_write does not show this power increase.

    So performing the same actions in the following:

    1.   Start the product and do not store the bluetooth peer address using sd_flash_write - no increase in power consumption at all
    2.   Start the product and stores the bluetooth peer address uing sd_flash_write - after 30 seconds the power increases to approx 3mA.

    My initial feeling was that some callback /event might be occurring from the Nordic is there anything to check for

  • Are only calling sd_flash_write() once at start-up or is sd_flash_write() called anywhere else in the code?

    How are you handling the NRF_EVT_FLASH_OPERATION_SUCCESS event? You mentioned that you were polling for the event?

    The sd_flash_write() function will return immediately with NRF_SUCCESS if the flash operation has been queued successfully and then you will get the NRF_EVT_FLASH_OPERATION_SUCCESS event when the operation is done. There is no additional events or callbacks that are invoked. 

    Have you verified that the device is not stuck in an error handler or in the Hardfault handler when the current consumption goes from 20ua to 3mA? Is the device functional after the current consumption increase, e.g. can you send and receive BLE packets?

    BEst regards

    Bjørn

Related