How to reduce power consumption

Chip model: nRF54L15

NCS version: 3.3.0[nrf]

Problem description: The current remains at 200+ µA even after entering low power consumption mode

Checked items:

DC/DC is enabled (&vregmain)

Unused GPIO has been pulled down

LED pin has been pulled low

ADC has been closed

The debugger has been disconnected

VDD ≥ 2.29V

The sense-edge-mask has been configured

CONFIG_BT=y

CONFIG_BT_BROADCASTER=y

CONFIG_BT_EXT_ADV=y

CONFIG_BT_PER_ADV=y

CONFIG_BT_PER_ADV_RSP=y

CONFIG_BT_DEVICE_NAME="PAwR adv sample"

CONFIG_BT_CENTRAL=y

#CONFIG_BT_CENTRAL=n

CONFIG_BT_GATT_CLIENT=y

#CONFIG_BT_GATT_CLIENT=n

CONFIG_BT_PER_ADV_SYNC_TRANSFER_SENDER=y

#CONFIG_BT_PER_ADV_SYNC_TRANSFER_SENDER=n

CONFIG_BT_REMOTE_INFO=y

#CONFIG_BT_REMOTE_INFO=n

CONFIG_ADC=y

CONFIG_HWINFO=y

CONFIG_SPI=n

CONFIG_I2C=n

CONFIG_PWM=n

#CONFIG_WATCHDOG=n

CONFIG_BT_CTLR_PHY_CODED=y

CONFIG_BT_CTLR_ADV_EXT=y

CONFIG_BT_CTLR_TX_PWR_PLUS_8=y

CONFIG_SERIAL=n 

CONFIG_UART_CONSOLE=n

CONFIG_CONSOLE=n

CONFIG_PRINTK=n

CONFIG_BOOT_BANNER=n

CONFIG_EARLY_CONSOLE=n

CONFIG_LOG=n             

CONFIG_USE_SEGGER_RTT=n  

CONFIG_RTT_CONSOLE=n     

CONFIG_LOG_BACKEND_RTT=n 

CONFIG_LOG_MODE_IMMEDIATE=n

# --- low power (reference) ---

CONFIG_TICKLESS_KERNEL=y

#CONFIG_PM=y

CONFIG_PM_DEVICE=y

CONFIG_PM_DEVICE_RUNTIME=y

&gpio1 {

    status = "okay";

    sense-edge-mask = <(1 << 6)>;

    unused_p1_2 { gpio-hog; gpios = <2 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p1_3 { gpio-hog; gpios = <3 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p1_4 { gpio-hog; gpios = <4 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p1_5 { gpio-hog; gpios = <5 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p1_9 { gpio-hog; gpios = <9 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p1_10 { gpio-hog; gpios = <10 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p1_11 { gpio-hog; gpios = <11 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p1_12 { gpio-hog; gpios = <12 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p1_13 { gpio-hog; gpios = <13 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p1_14 { gpio-hog; gpios = <14 GPIO_ACTIVE_HIGH>; output-low; };

};

&gpio0 {

    status = "okay";

    unused_p0_0 { gpio-hog; gpios = <0 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p0_1 { gpio-hog; gpios = <1 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p0_2 { gpio-hog; gpios = <2 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p0_3 { gpio-hog; gpios = <3 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p0_4 { gpio-hog; gpios = <4 GPIO_ACTIVE_HIGH>; output-low; };

};

&gpio2 {

    status = "okay";

    unused_p2_0 { gpio-hog; gpios = <0 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p2_1 { gpio-hog; gpios = <1 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p2_2 { gpio-hog; gpios = <2 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p2_3 { gpio-hog; gpios = <3 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p2_5 { gpio-hog; gpios = <5 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p2_6 { gpio-hog; gpios = <6 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p2_7 { gpio-hog; gpios = <7 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p2_8 { gpio-hog; gpios = <8 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p2_9 { gpio-hog; gpios = <9 GPIO_ACTIVE_HIGH>; output-low; };

    unused_p2_10 { gpio-hog; gpios = <10 GPIO_ACTIVE_HIGH>; output-low; };

};

/* 定义 GPIO 引脚节点 */

/ {

    mybtn: mybtn {

        compatible = "gpio-keys";

        pin_106: pin-106 {

            gpios = <&gpio1 6 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;

            label = "User button"; /* 建议添加 */

        };

    };

    myleden: pin-204 {

        compatible = "nordic,gpio-pins";

        gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>;

        status = "okay";

    };

    myledr: pin-107 {

        compatible = "nordic,gpio-pins";

        gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;

        status = "okay";

    };

    myledw: pin-108 {

        compatible = "nordic,gpio-pins";

        gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;

        status = "okay";

    };

    zephyr,user {

        io-channels = <&adc 0>;

    };

};

&adc {

    #address-cells = <1>;

    #size-cells = <0>;

    status = "okay";

    channel@0 {

        reg = <0>;

        zephyr,gain = "ADC_GAIN_1_4";

        zephyr,reference = "ADC_REF_INTERNAL";

        zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;

        zephyr,input-positive = <NRF_SAADC_VDD>;

        zephyr,resolution = <14>;

    };

};

&vregmain {

    status = "okay";

    regulator-initial-mode = <NRF5X_REG_MODE_DCDC>;

};

/* 禁用未使用的外设 */

/* UART */

&uart20 {

    status = "disabled";

};

&uart21 {

    status = "disabled";

};

&uart22 {

    status = "disabled";

};

&uart30 {

    status = "disabled";

};

/* SPI */

&spi00 {

    status = "disabled";

};

&spi20 {

    status = "disabled";

};

&spi21 {

    status = "disabled";

};

&spi22 {

    status = "disabled";

};

/* I2C */

&i2c20 {

    status = "disabled";

};

&i2c21 {

    status = "disabled";

};

&i2c22 {

    status = "disabled";

};

/* PWM */

&pwm20 {

    status = "disabled";

};

&pwm21 {

    status = "disabled";

};

&pwm22 {

    status = "disabled";

};

/* 外部 Flash */

&mx25r64 {

    status = "disabled";

};

/* NFC */

&nfct {

    status = "disabled";

};

/* 温度传感器 */

&temp {

    status = "disabled";

};

Parents Reply
  • Hello,

    Your CONFIG_PM=y configuration is commented out. Without this system power management is not active, CPU will not go to sleep state. ADC is disabled int he device tree but its enabled in the config file.

    You have sense edge on for specific pin. Tht's good. You can check if any other pins in your application accidentally using GPIOTE IN channels? 

    If you have a ppk2, try to measure the current and send me the .ppk file.

Children
No Data
Related