nRF5340-DK Low Power Modes

Hello everyone,

I'm working with the nRF5340-DK, aiming to achieve the lowest possible power consumption. From what I have read in some posts, I understand that this board should be able to reach consumption levels around 3 to 5 mA. In my setup, I'm using an SMU to power the board (through the P22 connector) and measure current. I've also set the nRF-only mode using the onboard switch to minimize MCU interface consumption. However, my current consumption is around 20 mA, which seems quite high for a chip described as ultra-low-power in the datasheet.

In my proj.conf I have disabled logging to reduce consumption:

CONFIG_LOG=n

CONFIG_SERIAL=n

And in my device tree overlay I have disabled some unused peripherals:

&adc {
status = "disabled";
};

&pwm0 {
status = "disabled";
};

&qspi {
status = "disabled";
};

&uart2 {
status = "disabled";
};

If helpful, I can provide current consumption graphs from the SMU software.

I'm wondering if there are additional configurations or APIs that would allow the board to enter a deep sleep mode, waking periodically to further reduce power consumption. I’ve noticed that Zephyr has APIs for managing low-power modes, but I’m unable to enable CONFIG_HAS_PM in proj.conf, which seems necessary for these functions.

Any advice on this would be greatly appreciated. Thank you!

Parents Reply Children
  • Hello, yes I was talking about idle current. In the image attached it is possiblle to visualize the current consumption chart. Before any thread or pheripheral initialization I put the system to sleep for 5 seconds (using k_msleep function) and the idle current is about 8.8mA. Then a thread starts running, for another 5 seconds, where the consumption rises and after that the system goes go sleep for 5 more seconds, where the idle consumption is about 13.5mA.

    Is there any way to improve this? I really don´t get how to achieve such low currents in the order of micro amps (uA) as you are saying.

  • Hi,

    These are extremely high numbers for idle and I suspect there is either somethign else on your board drawing power (or a measurement issue), so we need to get an overview first.

    1. Can you share details about your hardware (scematics, layout and description)? You can do so in a private ticket and refer to this if you do not want to share it in a public thread.
    2. Can you show and explain how you are mesuring the current consumption?
  • Hello,

    As mentioned, I am using the nRF5340-DK development kit, so all hardware information (such as schematics and technical details) is available in the board documentation on Nordic's website. In addition, I have connected an NFC shield and a CAN module to the setup.

    For measuring current, I am using an SMU to simultaneously power the board and measure the current draw. Since the NFC shield requires a 5V input, I am connecting the SMU to the Li-Po terminals. I've configured SW9 to the Li-Po position, set SW6 to nRF mode only (to reduce MCU interface power consumption), and left SW10 in the OFF position.

    Today, I ran the same test with both the NFC and CAN modules disconnected to see if there would be any difference. Here are the results: the current draw was approximately 3 mA before system initialization and around 9 mA when threads were running.

  • Do you have a measurement when the device is in idle/sleep and with UART logging disabled? Also, and important: can you share details how you rea measuring? And to get a good reference, can you make a measurement with all external components connected where you test the nRF5x System Off demo and share the current consumption pattern here?

  • Hello, sorry for the late response.

    The in the previous images that I sent the system should be in idle for the first seconds as I invoke the k_msleep function in the main function:

    int main(void)
    {
    // Set main clock at the correct frequency
    (void)SetInternalClock128();
    // Initialize services and hardware modules
    k_msleep(5000);
    ...
    }
    Additionaly, in my proj.conf I have commented out the following options to disable logs:
    #CONFIG_LOG=y
    #CONFIG_LOG_PRINTK=y

    As for the measuring procedure, as I have explained, I am connecting my SMU to the Li-Po terminals and supplying 5V. I have SW9 in the 'Li-Po' position, SW10 in the 'OFF' position and SW6 in the 'nRF only mode', allowing to disconnect the MCU interface, thus reducing power consumption.

    I have checked the System Off demo, and for what I have understood it basically initializes an NFC tag and if no activity is detected in the first 3 seconds the system "shuts down", waiting for some activity to be detected to restart. This principle seems interesting and I think it could be applied to my application, however I am using an NFC reader (instead of an NFC tag).
    I have performed the tests you have required and I goit the following results: without any external hardware connected I got currents between few micro amps until 500uA (the graph has a lot of noise) which seems a great improvement. With the hardware connected I got around 6mA which seems also acceptable. I am using the ST X-NUCLEO-NFC08A1 reader, if it is useful for you. 
    I can open a private ticket, if it easier for you to provide more support. I will leave the results.
      
Related