Sleep Mode and consumption issue nRF5340 with ncs 2.7.0 and sysbuild

Hi,

I face a 3mA consumption while I have CONFIG_PM=y and wether or not I have CONFIG_PM_DEVICE=y.

The idle thread is reached and executed : 

And the idle thread takes 89% of the time : 

What am I missing? 

Thank you for your help

Parents
  • Hi Benoit, 
    Could you try to verify that the chip show expected power consumption number when testing with a BLE sample in the SDK ?You should see a few uA between the spikes of BLE activities. 

    From what I can see it can be that the chip didn't enter sleep mode due to debug mode turned on. Please make sure you are not running the chip in debug when testing. Have you turned off thread_analyzer when testing ?

    If you do see the chip enter sleep mode when measuring with a stock BLE sample, my suggestion for testing is to try turn off the functionality in your code one by one to see which module cause the issue. 
     

  • Hi,

    CONFIG_PM=y is not available in nrf5340. Unfortunately, I was basing myself on an outdated doc (which seems to be redundand unfortunately) Optimizing Power on nRF5340 SoC Designs - Blogs - Nordic Blog - Nordic DevZone 

    It's been a year since someone in another ticket evoke the need to update this documentation. 

    Anyway, the reason was that I had CONFIG_USE_SEGGER_RTT=y

    I added 
    CONFIG_LOG=n
    CONFIG_SERIAL=n
    It is better, now I have around 300uA, which is still too much.
    I try to disable the uart and I face strange behavior.
    this doesn't compile : 
    in main.c 
    #include <zephyr/pm/device.h>
    
    static const struct device *sUartDev = DEVICE_DT_GET(DT_NODELABEL(uart0));
    
    later in the main : 
    
    pm_device_action_run(sUartDev,PM_DEVICE_ACTION_SUSPEND);
    It gives undefined reference to `__device_dts_ord_105' 
    If I replace uart0 by any peripheral I have (gpio0, spi4 ...) it compiles.
    in my board file, I have : 
    &uart0 {
        status = "okay";
        current-speed = <115200>;
        pinctrl-0 = <&uart0_default>;
        pinctrl-1 = <&uart0_sleep>;
        pinctrl-names = "default", "sleep";
    };
    Thank you for your help
Reply
  • Hi,

    CONFIG_PM=y is not available in nrf5340. Unfortunately, I was basing myself on an outdated doc (which seems to be redundand unfortunately) Optimizing Power on nRF5340 SoC Designs - Blogs - Nordic Blog - Nordic DevZone 

    It's been a year since someone in another ticket evoke the need to update this documentation. 

    Anyway, the reason was that I had CONFIG_USE_SEGGER_RTT=y

    I added 
    CONFIG_LOG=n
    CONFIG_SERIAL=n
    It is better, now I have around 300uA, which is still too much.
    I try to disable the uart and I face strange behavior.
    this doesn't compile : 
    in main.c 
    #include <zephyr/pm/device.h>
    
    static const struct device *sUartDev = DEVICE_DT_GET(DT_NODELABEL(uart0));
    
    later in the main : 
    
    pm_device_action_run(sUartDev,PM_DEVICE_ACTION_SUSPEND);
    It gives undefined reference to `__device_dts_ord_105' 
    If I replace uart0 by any peripheral I have (gpio0, spi4 ...) it compiles.
    in my board file, I have : 
    &uart0 {
        status = "okay";
        current-speed = <115200>;
        pinctrl-0 = <&uart0_default>;
        pinctrl-1 = <&uart0_sleep>;
        pinctrl-names = "default", "sleep";
    };
    Thank you for your help
Children
  • Hi Benoit, 

    First thing first we need to verify that you can see low power consumption with your setup. 


    Please try testing with the attached hex files (peripheral_lbs with minimum setting)  and let us know if you see the board advertising and you see low sleep current as shown in the picture: 


    app_core.hex

    net_core.hex

    Could you state which SDK version  you are using ? If you test using DEVICE_DT_GET(DT_NODELABEL(uart0)); in other sample that use UART do you see the same problem ? If you don't please show us your board files. 

    If you simply set the uart0 status=disabled do you see the power consumption reduced ? 

Related