nRF54L15-DK suspiciously high sleep current

Greetings to everybody!

There is some question about nRF54L15-DK board measured current consumption.
I measure current via the P6 connector, that is, I measure current within the VDDM_nRF cirquit.
Which is precisely the nRF54L15's MCU consumption. This goes to pin 48 (VDD). While the rest VDD pins (47, 10, 22, 36) are named VDD_nRF
and used to derive the VDDIO voltage (as well as VDD_DBGR) via the NPN-Transistor/OA buffer. So, VDDIO is actually drawn from the +5V VBUS, not from the VDD_nRF. VDD_nRF is used solely as a reference level.
The board has QSPI flash chip, but it is powered from VDDIO line, thus no consumption influence inside the measured cirquit (VDDM_nRF). Same with LEDs - those are outside the VDDM_nRF power domain.

I have Nordic nRF Connect SDK v.3.0.2 installed (in c:\ncs folder). I use SystemInit() from the system_nrf54l.c file ("c:\ncs\v3.0.2\modules\hal\nordic\nrfx\mdk\system_nrf54l.c")

I have created a simple IAR project which contains the main.c file with almost empty main function, the system_nrf54l.c is addded to the IAR project tree. 
In the IAR's Project Options/C++ Compiler/Defined Symbols I defined minimum required things required for nordic's nrf.h and system_nrf54l.c to recognize nRF54L15's Cortex-M33 core correctly.
(like NRF54L15_XXAA and __ARM_FEATURE_CMSE)


In startup.s file I call "bl SystemInit" - so the very first instruction after reset calls the SystemInit, which in its turn, the official Nordic startup code.
This code initializes clocks, enables Debug AP, turns on DCDC. Without SystemInit(), the current consumption is about 820uA. Right after the DCDC is enabled inside the SystemInit(), the current drops to ~35uA.


Then the main() function is finally called and there I just have:

  while (true)
  {
    SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
    __WFE();
  }
 
 System definitely stays in the sleep mode. After reset no peripherals are touched, since this is uber simple IAR project, it just goes to main after SystemInit().
 But no matter what I do, I have 35 uA consumption. I would expect in sleep mode current to drop to about 1-2 uA.
 
 I would like again to stress out the fact that this is the IAR ARM project, it is uber simple, it is not zephyr compiled project. In IAR project I'm 100% sure that after reset,
 the MCU just executes SystemInit() and then goes into main(). Thus no hidden or forgotten code which could init or power some power domain which could be the reason of 35uA consumption.

The asm startup code is this:

......

pubweak Reset_Handler
section .text:CODE:REORDER:NOROOT(2)
        
Reset_Handler
  bl SystemInit
  b __iar_program_start

......


 Maybe MCU after reset and Nordic's SystemInit() still has some powered peripheral which needs to be shut down? But what this could be, since I'd expect after reset MCU is in its less used power state.


 Please suggest where could be the problem?

Parents
  • This is a follow up post.

    The problem was indeed in my custom current measuring device (in previous posts I have shown its schematics part).

    I have tried to measure current consumption of my nRF54L15DK usual standard multimeter, and it shown about 2.6 uA, while my device still measured 32uA like on the pictures I have shown in previous posts.

    So, this definitely solves the problem, and as such, it emerges out that the "suspiciously high current" problem was not present at all, and had I measured current with multimeter from the very beginning, I'd have known that my firmware puts the MCU into valid sleep mode, and it consumes valid amount of energy, as declared in specifications.

    But still I'm not totally at ease, since this still keeps me wonder what is wrong with my custom measurement device's schematics. Using it with some of my other projects, as I stated before, have shown valid results. So, my device is also functional. But now I know there are some pitfalls...

    To get closer to the problem's solution, I tried measuring my other project's PCB (let's name it PCB_X) in these 3 setups:

    1. I measured my PCB_X, powered from the battery. My device measures 1uA sleep current (which is 100% true).

    2. I tried to power my PCB_X from nRF54L15DK's P6 connector, pin 3. That is, I have 'borrowed' voltage VDDM (which arrives from nPM1300, VOUT1). In this scenario I was astounded to see measurements have risen to 31uA (!!!)

    3. I tried same as #2 but instead of P6.3 (VDDM) I have used VDDIO  which is routed to many connectors, like P0, P1, P2. This time I have measured almost normal sleep current (higher than 1uA but much closer to it - for now I don't remember exactly)

    So, this concludes:

    1. My measurement device is somehow influenced by the VDDM (P6.3) generated voltage. 

    2. I totally have no idea what can influence my measurement device so it starts measuring those extra 30uA. What I can guess is that my measurement device catches some noise and that is the reason of those weird readings.

    I'm skillful enough to have developed this device, firmware and software for it, but as it is clear, my knowledge is limited and in such situation I just cannot understand what/who is the culprit in here. 

    Any ideas what can influence my measurements? I'd be very grateful for comments which will be able to shed any light on this measurement problem.

  • In addition to Hakon's notes you may be unlucky with aliasing. INA229: "The device allows for selectable ADC conversion times from 50 µs to 4.12 ms". Perhaps the ADC sampling is hitting (synchronous with) the hysteretic mode current peaks which would give a huge increase in reported current. Hysteretic mode is described under a different part but it is basically the same: nwp_034 Note also the hysteretic frequency will  be different between nRF52840 and nRF54L15 depending on (amongst other factors) the current driver and net bulk capacitance charged by the current pulses.

Reply
  • In addition to Hakon's notes you may be unlucky with aliasing. INA229: "The device allows for selectable ADC conversion times from 50 µs to 4.12 ms". Perhaps the ADC sampling is hitting (synchronous with) the hysteretic mode current peaks which would give a huge increase in reported current. Hysteretic mode is described under a different part but it is basically the same: nwp_034 Note also the hysteretic frequency will  be different between nRF52840 and nRF54L15 depending on (amongst other factors) the current driver and net bulk capacitance charged by the current pulses.

Children
No Data
Related