nrf52840 ncs-v3.0.2 Power consumption 450μA

Hello, I am developing a low-power nRF52840 product using the ncs Zephyr environment. Currently, I have suspended peripherals such as UART and I2C, allowing the system to automatically enter idle low power, but the measured real-time power consumption is 450 μA, and I cannot figure out what is causing such high power consumption. The following are my proj.conf, appoverlay files, and main function.

CONFIG_NCS_SAMPLES_DEFAULTS=y
# Enable the UART driver
CONFIG_UART_ASYNC_API=y
CONFIG_NRFX_UARTE0=n
CONFIG_NRFX_UARTE1=n
CONFIG_SERIAL=n
CONFIG_GPIO=y

# Make sure printk is printing to the UART console
CONFIG_CONSOLE=n
CONFIG_UART_CONSOLE=n
CONFIG_RTT_CONSOLE=n

CONFIG_HEAP_MEM_POOL_SIZE=76800  

CONFIG_BT=y
CONFIG_BT_PERIPHERAL=y
CONFIG_BT_DEVICE_NAME="GH_DEV"
CONFIG_BT_MAX_CONN=1
CONFIG_BT_MAX_PAIRED=1

# Enable the NUS service
CONFIG_BT_NUS=y

# Enable bonding
CONFIG_BT_SETTINGS=y
 
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048
# Config logger
CONFIG_LOG=n

#CONFIG_BT_CTLR_ADVANCED_FEATURES=y
CONFIG_BT_CTLR_CONN_RSSI=y

CONFIG_LOG_FUNC_NAME_PREFIX_DBG=n
CONFIG_LOG_BACKEND_SHOW_COLOR=n

CONFIG_LOG_BACKEND_UART=n
CONFIG_LOG_BACKEND_RTT=n
CONFIG_USE_SEGGER_RTT=n
CONFIG_LOG_PRINTK=n
CONFIG_LOG_OUTPUT=n
CONFIG_ASSERT=n


#flash
CONFIG_FLASH=y
#CONFIG_NVS=y
CONFIG_NRFX_NVMC=y
CONFIG_FILE_SYSTEM=y
CONFIG_FLASH_MAP=y
CONFIG_FLASH_PAGE_LAYOUT=y

CONFIG_MPU_ALLOW_FLASH_WRITE=y

CONFIG_I2C=y
#adc
CONFIG_ADC=y
# CONFIG_BT_CTLR=y
CONFIG_BT_HCI_VS=y
CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL=y
# CONFIG_BT_EXT_ADV=y

#SPI
CONFIG_SPI=y
CONFIG_SPI_NRFX=y
CONFIG_PINCTRL=y


CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=n

#watch dog
CONFIG_WATCHDOG=y  
 
CONFIG_NRFX_TIMER3=n
CONFIG_NRFX_GPIOTE0=n
CONFIG_NRFX_PPI=n

CONFIG_BT_GATT_CLIENT=n

#DSP
CONFIG_CMSIS_DSP=n
CONFIG_CMSIS_DSP_FILTERING=n
#FPU
CONFIG_FPU=n
CONFIG_FPU_SHARING=n
CONFIG_NEWLIB_LIBC=n
CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=n

# #NFC
# CONFIG_NFC_T4T_NRFXLIB=y

# CONFIG_NFC_NDEF=y
# CONFIG_NFC_NDEF_MSG=y
# CONFIG_NFC_NDEF_RECORD=y
# CONFIG_NFC_NDEF_TEXT_RECORD=y
# CONFIG_NFC_NDEF_TNEP_RECORD=y
# CONFIG_NFC_TNEP_TAG=y
# CONFIG_NFC_NDEF_PARSER=y
CONFIG_NFCT_PINS_AS_GPIOS=y
CONFIG_PM=y
CONFIG_PM_DEVICE=y
CONFIG_PM_DEVICE_RUNTIME=y



static void suspend_all_peripherals(void)
{
    const struct device *dev;
    int ret;

    /* ------------------ UART0 ------------------ */
    dev = DEVICE_DT_GET(DT_NODELABEL(uart0));
    if (dev) {
        ret = pm_device_action_run(dev, PM_DEVICE_ACTION_SUSPEND);
         if (ret == 0 || ret == -EALREADY) {
             LOG_INFO("UART0 suspended (ret=%d)", ret);
         } else {
             LOG_INFO("UART0 suspend failed (ret=%d)", ret);
         }
     }

    /* ------------------ I2C0 ------------------ */
#ifdef CONFIG_I2C
    dev = DEVICE_DT_GET(DT_NODELABEL(i2c0));
    if (dev) {
        ret = pm_device_action_run(dev, PM_DEVICE_ACTION_SUSPEND);
        if (ret == 0 || ret == -EALREADY) {
            LOG_INFO("I2C0 suspended (ret=%d)", ret);
        } else if (ret != -ENOTSUP) {
            LOG_INFO("I2C0 suspend failed (ret=%d)", ret);
        }
    }
#endif

    /* ------------------ SPI1 ------------------ */
#ifdef CONFIG_SPI
    dev = DEVICE_DT_GET(DT_NODELABEL(spi1));
    if (dev) {
        ret = pm_device_action_run(dev, PM_DEVICE_ACTION_SUSPEND);
        if (ret == 0 || ret == -EALREADY) {
            LOG_INFO("SPI1 suspended (ret=%d)", ret);
        } else if (ret != -ENOTSUP) {
            LOG_INFO("SPI1 suspend failed (ret=%d)", ret);
        }
    }

    /* ------------------ SPI3 ------------------ */
    dev = DEVICE_DT_GET(DT_NODELABEL(spi3));
    if (dev) {
        ret = pm_device_action_run(dev, PM_DEVICE_ACTION_SUSPEND);
        if (ret == 0 || ret == -EALREADY) {
            LOG_INFO("SPI3 suspended (ret=%d)", ret);
        } else if (ret != -ENOTSUP) {
            LOG_INFO("SPI3 suspend failed (ret=%d)", ret);
        }
    }
#endif

    /* ------------------ ADC ------------------ */
#ifdef CONFIG_ADC
    dev = DEVICE_DT_GET(DT_NODELABEL(adc));
    if (dev) {
        ret = pm_device_action_run(dev, PM_DEVICE_ACTION_SUSPEND);
        if (ret == 0 || ret == -EALREADY) {
            LOG_INFO("ADC suspended (ret=%d)", ret);
        } else if (ret != -ENOTSUP) {
            LOG_INFO("ADC suspend failed (ret=%d)", ret);
        }
    }
#endif
}


int main(void)
{	
	gpio_int();
	unused_pin_init();
	suspend_all_peripherals();


	for (;;)
	{
		k_sleep(K_MSEC(1000));
	}
}
/*
 * Copyright (c) 2022 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
 */

/ {
	chosen {
		nordic,nus-uart = &uart0;
	};

	zephyr,user {
		io-channels = <&adc 6>;
	};
	power_ctr_gpio {
		compatible = "gpio-leds";  
		power_ctr_pin: power_ctr_pin_0 {
			gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
			label = "POWER_CTR_GPIO_PIN";
		};
	};
	power_check {
			compatible = "gpio-leds";  
		power_check_pin: power_check_pin {
			gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
			label = "POWER_CHECK_PIN";
		};	
	};

	nst1001_power{
			compatible = "gpio-leds";  
		nst1001_power_pin: nst1001_power_pin_4 {
			gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
			label = "nst1001_POWER_PIN";
		};		
	};
	nst1001_dq_data{
			compatible = "gpio-leds";  
		nst1001_dq_data_pin: nst1001_dq_data_pin_3 {
			gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>;
			label = "nst1001_DQ_PIN";
		};		
	};
	iic_pull_gpio {
		compatible = "gpio-leds";  
		iic_pull_gpio: iic_pull_gpio {
			gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;  
			label = "IIC_PULL_GPIO_PINW";
		};
	};
	nsa_pd_gpio {
		compatible = "gpio-leds";  
		nsa_pd_gpio: nsa_pd_gpio {
			gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;  
			label = "NSA_PD_GPIO_PIN";
		};
	};

	unused_gpio1 {
			compatible = "gpio-leds";  
		unused_gpio1: unused_gpio1 {
			gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;  
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio2 {
			compatible = "gpio-leds";  
		unused_gpio2: unused_gpio2 {
			gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>;  
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio3 {
			compatible = "gpio-leds";  
		unused_gpio3: unused_gpio3 {
			gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;  
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio4 {
			compatible = "gpio-leds";  
		unused_gpio4: unused_gpio4 {
			gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;  
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio5 {
			compatible = "gpio-leds"; 
		unused_gpio5: unused_gpio5 {
			gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;  
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio6 {
			compatible = "gpio-leds";  
		unused_gpio6: unused_gpio6 {
			gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio7 {
			compatible = "gpio-leds";  
		unused_gpio7: unused_gpio7 {
			gpios = <&gpio0 19 GPIO_ACTIVE_HIGH>; 
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio8 {
			compatible = "gpio-leds";
		unused_gpio8: unused_gpio8 {
			gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio9 {
			compatible = "gpio-leds"; 
		unused_gpio9: unused_gpio9 {
			gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>; 
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio10 {
			compatible = "gpio-leds";
		unused_gpio10: unused_gpio10 {
			gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio11 {
			compatible = "gpio-leds";
		unused_gpio11: unused_gpio11 {
			gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio12 {
			compatible = "gpio-leds";
		unused_gpio12: unused_gpio12 {
			gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio13 {
			compatible = "gpio-leds";
		unused_gpio13: unused_gpio13 {
			gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio14 {
			compatible = "gpio-leds";
		unused_gpio14: unused_gpio14 {
			gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio15 {
			compatible = "gpio-leds";
		unused_gpio15: unused_gpio15 {
			gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio16 {
			compatible = "gpio-leds";
		unused_gpio16: unused_gpio16 {
			gpios = <&gpio1 05 GPIO_ACTIVE_HIGH>;	
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio17 {
			compatible = "gpio-leds";
		unused_gpio17: unused_gpio17 {
			gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;	
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio18 {
			compatible = "gpio-leds";
		unused_gpio18: unused_gpio18 {
			gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;	
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio19 {
			compatible = "gpio-leds";
		unused_gpio19: unused_gpio19 {
			gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;	
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio20 {
			compatible = "gpio-leds";
		unused_gpio20: unused_gpio20 {
			gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;	
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio21 {
			compatible = "gpio-leds";
		unused_gpio21: unused_gpio21 {
			gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;	
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio22 {
			compatible = "gpio-leds";
		unused_gpio22: unused_gpio22 {
			gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio23 {
			compatible = "gpio-leds";
		unused_gpio23: unused_gpio23 {
			gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio24 {
			compatible = "gpio-leds";
		unused_gpio24: unused_gpio24 {
			gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio25 {
			compatible = "gpio-leds";
		unused_gpio25: unused_gpio25 {
			gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio26 {
			compatible = "gpio-leds";
		unused_gpio26: unused_gpio26 {
			gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio27 {
			compatible = "gpio-leds";
		unused_gpio27: unused_gpio27 {
			gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio28 {
			compatible = "gpio-leds";
		unused_gpio28: unused_gpio28 {
			gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio29 {
			compatible = "gpio-leds";
		unused_gpio29: unused_gpio29{
			gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio30 {
			compatible = "gpio-leds";
		unused_gpio30: unused_gpio30{
			gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
	unused_gpio31 {
			compatible = "gpio-leds";
		unused_gpio31: unused_gpio31{
			gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};	
		unused_gpio32 {
			compatible = "gpio-leds";
		unused_gpio32: unused_gpio32{
			gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};	
		unused_gpio33 {
			compatible = "gpio-leds";
		unused_gpio33: unused_gpio33{
			gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};	
			unused_gpio34 {
			compatible = "gpio-leds";
		unused_gpio34: unused_gpio34{
			gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};	
				unused_gpio35 {
			compatible = "gpio-leds";
		unused_gpio35: unused_gpio35{
			gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};	
				unused_gpio36 {
			compatible = "gpio-leds";
		unused_gpio36: unused_gpio36{
			gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};	
					unused_gpio37 {
			compatible = "gpio-leds";
		unused_gpio37: unused_gpio37{
			gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};	
						unused_gpio38 {
			compatible = "gpio-leds";
		unused_gpio38: unused_gpio38{
			gpios = <&gpio0 25 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};
							unused_gpio39 {
			compatible = "gpio-leds";
		unused_gpio39: unused_gpio39{
			gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};	
							unused_gpio40 {
			compatible = "gpio-leds";
		unused_gpio40: unused_gpio40{
			gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};	
							unused_gpio41 {
			compatible = "gpio-leds";
		unused_gpio41: unused_gpio41{
			gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>;
			label = "UNUSED_GPIO_PIN";
		};	
	};		
};

&adc {
	status = "okay";
	#address-cells = <1>;
	#size-cells = <0>;

	channel@6 {
		reg = <6>;
		zephyr,gain = "ADC_GAIN_1_6";
		zephyr,reference = "ADC_REF_INTERNAL";
		zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
		zephyr,input-positive = <NRF_SAADC_AIN6>;
		zephyr,vref-mv = <600>;
		zephyr,resolution = <12>;
	};
};


&led0 {
	gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;//R
};

&led1 {
	gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;//G
};

&led2 {
	gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;//B
};

&i2c0 {
	nsa2860: nsa2860@6d {
		compatible = "i2c-device";
		reg = <0x6d>;
		label = "NSA2860";
		zephyr,pm-device-runtime-auto;
	};
};
&i2c0_default {
	group1 {
		psels = <NRF_PSEL(TWIM_SDA, 0, 26)>, 
				<NRF_PSEL(TWIM_SCL, 0, 27)>;
	};
};


&uart0_default {
    group1 {
        psels = <NRF_PSEL(UART_TX, 0, 26)>;
    };
    group2 {
        psels = <NRF_PSEL(UART_RX, 0, 27)>;
        bias-pull-up;
    };
};

&uart1_default {
    group1 {
        psels = <NRF_PSEL(UART_TX, 0, 13)>;
    };
    group2 {
        psels = <NRF_PSEL(UART_RX, 0, 14)>;
        bias-pull-up;
    };
};

&uart0 {
	current-speed = <9600>;
};

&uart1 {
    status = "okay";
};

&pinctrl {
	spi1_default_alt: spi1_default_alt {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK,  0, 24)>,
					<NRF_PSEL(SPIM_MISO, 0, 23)>,   
					<NRF_PSEL(SPIM_MOSI, 0, 22)>;   
		};
	};

	spi1_sleep_alt: spi1_sleep_alt {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK,  0, 24)>,
					<NRF_PSEL(SPIM_MISO, 0, 23)>,   
					<NRF_PSEL(SPIM_MOSI, 0, 22)>;   
			low-power-enable;
		};
	};
};

&spi1 {
	compatible = "nordic,nrf-spim";
	status = "okay";
	pinctrl-0 = <&spi1_default_alt>;
	pinctrl-1 = <&spi1_sleep_alt>;
	pinctrl-names = "default", "sleep";
	cs-gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;

	iis3dwb: iis3dwb@0 {
		compatible = "vnd,spi-device";
		reg = <0>;
		spi-max-frequency = <2000000>;
		// zephyr,pm-device-runtime-auto;
		// spi-cpol;
		// spi-cpha;
	};
};

&uicr {
    nfct-pins-as-gpios;
};


Related