nPM1300 Quiescent Current

I've been testing the nPM1300 and I'm running into some interesting issues. I'm using NCS 2.7.x (originally evaluated on 2.6.x) and got it to the sweet spot where the nRF9161 + nPM1300 was drawing < 10uA. (or so I thought until I revisited it!)

Here's how it's being used:

  • Initializing buck2 with a 255K resistor supplying 3.3V
  • Keeping buck1 on at all times at 2.7V (255K resistor) (are these VSET values OK for maxing out the regulator?)
  • All LDO output/inputs are grounded and unused

Buck2 is only used when USB is connected. When disabled, I'm seeing a range of quiescent currents from 8uA up to 108uA depending on when the device is being configured (Seems like possibly related to https://docs.nordicsemi.com/bundle/errata_nPM1300_Rev1/page/ERR/nPM1300/Rev1/latest/anomaly_300_31.html?) I saw that reading from the device prevents this high Iq but it still seems higher than expected.

Additionally, as a different issue but potentially related, whenever I probe the SDA line with my multi-meter, nPM1300 increases current draw to 1mA and doesn't go back down unless reset.

has already looked at the design and I've addressed the functionality concerns a while back.

Is there anything I can do to get the operation to be more stable/repeatable? Depending on how long the device is powered (or not powered at all) I get different quiescent currents at the battery. (Powered only on 3.6V on a bench supply via a JouleScope)

By the way my device tree def is as follows:

	npm1300_pmic: pmic@6b {
		compatible = "nordic,npm1300";
		reg = <0x6b>;

		npm1300_gpio: gpio-controller {
			compatible = "nordic,npm1300-gpio";
			gpio-controller;
			#gpio-cells = <2>;
			ngpios = <5>;
		};

		npm1300_leds: leds {
			compatible = "nordic,npm1300-led";
			nordic,led0-mode = "error";
			nordic,led1-mode = "charging";
			nordic,led2-mode = "host";
		};

		npm1300_charger: charger {
			compatible = "nordic,npm1300-charger";
			term-microvolt = <4150000>;
			term-warm-microvolt = <4000000>;
			current-microamp = <800000>;
			dischg-limit-microamp = <1000000>;
			vbus-limit-microamp = <1000000>;
			thermistor-ohms = <10000>;
			thermistor-beta = <3380>;
			charging-enable;
		};

		npm1300_regulators: regulators {
			compatible = "nordic,npm1300-regulator";

			npm1300_buck1: BUCK1 {
				regulator-min-microvolt = <2700000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
			};

			npm1300_buck2: BUCK2 {
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};


		};
	};

To add to the fun, I've noticed that when warmer I get closer to the expected quiescent current of about 4uA. (measured post hot air rework) Once it cools off it can land anywhere in the aforementioned range.

I've disabled the configuration in the mcuboot image:

CONFIG_REGULATOR=n
CONFIG_REGULATOR_NPM1300=n
CONFIG_MFD_NPM1300=n
CONFIG_I2C=n
CONFIG_GPIO_NPM1300=n
CONFIG_NPM1300_CHARGER=n

But allow the default regulator and MFD initialization calls to happen during boot. I did notice that the buck status register gets read a couple times during init. Doing that after enabling the buck2 pulldown and disabling the buck2 output appears to help reduce the quiescent current from 100uA to 10uA. (my thoughts why it could be related to [31] BUCK: Increased BUCK Hysteretic quiescent current)

Any help is greatly appreciated.

  • Hi,

     

    It sounds like one or more GPIOs are floating, based on your description here:

    Additionally, as a different issue but potentially related, whenever I probe the SDA line with my multi-meter, nPM1300 increases current draw to 1mA and doesn't go back down unless reset.

    Could you share your compiled zephyr.dts file? Are you using internal pull-resistors on your SDA/SCL lines?

     

    Kind regards,

    Håkon

  • Hey  

    Could you share your compiled zephyr.dts file?

    Sure! See the attached.

    /dts-v1/;
    
    / {
    	#address-cells = < 0x1 >;
    	#size-cells = < 0x1 >;
    	model = "Circuit Dojo nRF9161 Feather";
    	compatible = "circuitdojo,feather-nrf9161";
    	chosen {
    		zephyr,entropy = &psa_rng;
    		zephyr,flash-controller = &flash_controller;
    		zephyr,console = &uart0;
    		zephyr,shell-uart = &uart0;
    		zephyr,uart-mcumgr = &uart0;
    		nordic,modem-trace-uart = &uart1;
    		nordic,pm-ext-flash = &w25q128jv;
    		zephyr,flash = &flash0;
    		zephyr,sram = &sram0_ns;
    		zephyr,code-partition = &slot0_ns_partition;
    	};
    	aliases {
    		sw0 = &button0;
    		mcuboot-button0 = &button0;
    		watchdog0 = &wdt0;
    		spi-flash0 = &w25q128jv;
    		accel0 = &lis2dh;
    	};
    	soc {
    		#address-cells = < 0x1 >;
    		#size-cells = < 0x1 >;
    		compatible = "nordic,nrf9161-laca", "nordic,nrf9120", "nordic,nrf91", "simple-bus";
    		interrupt-parent = < &nvic >;
    		ranges;
    		nvic: interrupt-controller@e000e100 {
    			#address-cells = < 0x1 >;
    			compatible = "arm,v8m-nvic";
    			reg = < 0xe000e100 0xc00 >;
    			interrupt-controller;
    			#interrupt-cells = < 0x2 >;
    			arm,num-irq-priority-bits = < 0x3 >;
    			phandle = < 0x1 >;
    		};
    		systick: timer@e000e010 {
    			compatible = "arm,armv8m-systick";
    			reg = < 0xe000e010 0x10 >;
    			status = "disabled";
    		};
    		sram0: memory@20000000 {
    			compatible = "mmio-sram";
    			reg = < 0x20000000 0x40000 >;
    		};
    		peripheral@40000000 {
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x1 >;
    			ranges = < 0x0 0x40000000 0x10000000 >;
    			flash_controller: flash-controller@39000 {
    				compatible = "nordic,nrf91-flash-controller";
    				reg = < 0x39000 0x1000 >;
    				partial-erase;
    				#address-cells = < 0x1 >;
    				#size-cells = < 0x1 >;
    				flash0: flash@0 {
    					compatible = "soc-nv-flash";
    					erase-block-size = < 0x1000 >;
    					write-block-size = < 0x4 >;
    					reg = < 0x0 0x100000 >;
    					partitions {
    						compatible = "fixed-partitions";
    						#address-cells = < 0x1 >;
    						#size-cells = < 0x1 >;
    						boot_partition: partition@0 {
    							label = "mcuboot";
    							reg = < 0x0 0x10000 >;
    						};
    						slot0_partition: partition@10000 {
    							label = "image-0";
    							reg = < 0x10000 0x40000 >;
    						};
    						slot0_ns_partition: partition@50000 {
    							label = "image-0-nonsecure";
    							reg = < 0x50000 0x35000 >;
    						};
    						slot1_partition: partition@85000 {
    							label = "image-1";
    							reg = < 0x85000 0x40000 >;
    						};
    						slot1_ns_partition: partition@c5000 {
    							label = "image-1-nonsecure";
    							reg = < 0xc5000 0x35000 >;
    						};
    						storage_partition: partition@fa000 {
    							label = "storage";
    							reg = < 0xfa000 0x6000 >;
    						};
    					};
    				};
    			};
    			adc: adc@e000 {
    				compatible = "nordic,nrf-saadc";
    				reg = < 0xe000 0x1000 >;
    				interrupts = < 0xe 0x1 >;
    				status = "okay";
    				#io-channel-cells = < 0x1 >;
    			};
    			dppic: dppic@17000 {
    				compatible = "nordic,nrf-dppic";
    				reg = < 0x17000 0x1000 >;
    				status = "okay";
    			};
    			egu0: egu@1b000 {
    				compatible = "nordic,nrf-egu";
    				reg = < 0x1b000 0x1000 >;
    				interrupts = < 0x1b 0x1 >;
    				status = "okay";
    			};
    			egu1: egu@1c000 {
    				compatible = "nordic,nrf-egu";
    				reg = < 0x1c000 0x1000 >;
    				interrupts = < 0x1c 0x1 >;
    				status = "okay";
    			};
    			egu2: egu@1d000 {
    				compatible = "nordic,nrf-egu";
    				reg = < 0x1d000 0x1000 >;
    				interrupts = < 0x1d 0x1 >;
    				status = "okay";
    			};
    			egu3: egu@1e000 {
    				compatible = "nordic,nrf-egu";
    				reg = < 0x1e000 0x1000 >;
    				interrupts = < 0x1e 0x1 >;
    				status = "okay";
    			};
    			egu4: egu@1f000 {
    				compatible = "nordic,nrf-egu";
    				reg = < 0x1f000 0x1000 >;
    				interrupts = < 0x1f 0x1 >;
    				status = "okay";
    			};
    			egu5: egu@20000 {
    				compatible = "nordic,nrf-egu";
    				reg = < 0x20000 0x1000 >;
    				interrupts = < 0x20 0x1 >;
    				status = "okay";
    			};
    			ipc: ipc@2a000 {
    				compatible = "nordic,nrf-ipc";
    				reg = < 0x2a000 0x1000 >;
    				interrupts = < 0x2a 0x1 >;
    				status = "okay";
    			};
    			i2s0: i2s@28000 {
    				compatible = "nordic,nrf-i2s";
    				#address-cells = < 0x1 >;
    				#size-cells = < 0x0 >;
    				reg = < 0x28000 0x1000 >;
    				interrupts = < 0x28 0x1 >;
    				status = "disabled";
    			};
    			kmu: kmu@39000 {
    				compatible = "nordic,nrf-kmu";
    				reg = < 0x39000 0x1000 >;
    				interrupts = < 0x39 0x1 >;
    				status = "okay";
    			};
    			pdm0: pdm@26000 {
    				compatible = "nordic,nrf-pdm";
    				reg = < 0x26000 0x1000 >;
    				interrupts = < 0x26 0x1 >;
    				status = "disabled";
    			};
    			regulators: regulator@4000 {
    				compatible = "nordic,nrf-regulators";
    				reg = < 0x4000 0x1000 >;
    				status = "okay";
    			};
    			vmc: vmc@3a000 {
    				compatible = "nordic,nrf-vmc";
    				reg = < 0x3a000 0x1000 >;
    				status = "okay";
    			};
    			uart0: uart@8000 {
    				compatible = "nordic,nrf-uarte";
    				reg = < 0x8000 0x1000 >;
    				interrupts = < 0x8 0x1 >;
    				status = "okay";
    				current-speed = < 0x1c200 >;
    				pinctrl-0 = < &uart0_default >;
    				pinctrl-1 = < &uart0_sleep >;
    				pinctrl-names = "default", "sleep";
    			};
    			uart1: uart@9000 {
    				compatible = "nordic,nrf-uarte";
    				reg = < 0x9000 0x1000 >;
    				interrupts = < 0x9 0x1 >;
    				status = "disabled";
    				current-speed = < 0xf4240 >;
    				pinctrl-0 = < &uart1_default >;
    				pinctrl-1 = < &uart1_sleep >;
    				pinctrl-names = "default", "sleep";
    			};
    			uart2: uart@a000 {
    				compatible = "nordic,nrf-uarte";
    				reg = < 0xa000 0x1000 >;
    				interrupts = < 0xa 0x1 >;
    				status = "disabled";
    			};
    			uart3: uart@b000 {
    				compatible = "nordic,nrf-uarte";
    				reg = < 0xb000 0x1000 >;
    				interrupts = < 0xb 0x1 >;
    				status = "disabled";
    			};
    			i2c0: i2c@8000 {
    				compatible = "nordic,nrf-twim";
    				#address-cells = < 0x1 >;
    				#size-cells = < 0x0 >;
    				reg = < 0x8000 0x1000 >;
    				clock-frequency = < 0x186a0 >;
    				interrupts = < 0x8 0x1 >;
    				easydma-maxcnt-bits = < 0xd >;
    				status = "disabled";
    			};
    			i2c1: i2c@9000 {
    				compatible = "nordic,nrf-twim";
    				#address-cells = < 0x1 >;
    				#size-cells = < 0x0 >;
    				reg = < 0x9000 0x1000 >;
    				clock-frequency = < 0x186a0 >;
    				interrupts = < 0x9 0x1 >;
    				easydma-maxcnt-bits = < 0xd >;
    				status = "disabled";
    			};
    			i2c2: i2c@a000 {
    				compatible = "nordic,nrf-twim";
    				#address-cells = < 0x1 >;
    				#size-cells = < 0x0 >;
    				reg = < 0xa000 0x1000 >;
    				clock-frequency = < 0x186a0 >;
    				interrupts = < 0xa 0x1 >;
    				easydma-maxcnt-bits = < 0xd >;
    				status = "okay";
    				pinctrl-0 = < &i2c2_default >;
    				pinctrl-1 = < &i2c2_sleep >;
    				pinctrl-names = "default", "sleep";
    				lis2dh: lis2dh@19 {
    					compatible = "st,lis2dh";
    					reg = < 0x19 >;
    					irq-gpios = < &gpio0 0x13 0x0 >, < &gpio0 0xc 0x0 >;
    				};
    				npm1300_pmic: pmic@6b {
    					compatible = "nordic,npm1300";
    					reg = < 0x6b >;
    					npm1300_gpio: gpio-controller {
    						compatible = "nordic,npm1300-gpio";
    						gpio-controller;
    						#gpio-cells = < 0x2 >;
    						ngpios = < 0x5 >;
    					};
    					npm1300_leds: leds {
    						compatible = "nordic,npm1300-led";
    						nordic,led0-mode = "error";
    						nordic,led1-mode = "charging";
    						nordic,led2-mode = "host";
    					};
    					npm1300_charger: charger {
    						compatible = "nordic,npm1300-charger";
    						term-microvolt = < 0x3f52f0 >;
    						term-warm-microvolt = < 0x3d0900 >;
    						current-microamp = < 0xc3500 >;
    						dischg-limit-microamp = < 0xf4240 >;
    						vbus-limit-microamp = < 0xf4240 >;
    						thermistor-ohms = < 0x2710 >;
    						thermistor-beta = < 0xd34 >;
    						charging-enable;
    					};
    					npm1300_regulators: regulators {
    						compatible = "nordic,npm1300-regulator";
    						npm1300_buck1: BUCK1 {
    							regulator-min-microvolt = < 0x2932e0 >;
    							regulator-max-microvolt = < 0x325aa0 >;
    							regulator-always-on;
    						};
    						npm1300_buck2: BUCK2 {
    							regulator-min-microvolt = < 0x325aa0 >;
    							regulator-max-microvolt = < 0x325aa0 >;
    						};
    					};
    				};
    			};
    			i2c3: i2c@b000 {
    				compatible = "nordic,nrf-twim";
    				#address-cells = < 0x1 >;
    				#size-cells = < 0x0 >;
    				reg = < 0xb000 0x1000 >;
    				clock-frequency = < 0x186a0 >;
    				interrupts = < 0xb 0x1 >;
    				easydma-maxcnt-bits = < 0xd >;
    				status = "disabled";
    			};
    			spi0: spi@8000 {
    				compatible = "nordic,nrf-spim";
    				#address-cells = < 0x1 >;
    				#size-cells = < 0x0 >;
    				reg = < 0x8000 0x1000 >;
    				interrupts = < 0x8 0x1 >;
    				max-frequency = < 0x7a1200 >;
    				easydma-maxcnt-bits = < 0xd >;
    				status = "disabled";
    			};
    			spi1: spi@9000 {
    				compatible = "nordic,nrf-spim";
    				#address-cells = < 0x1 >;
    				#size-cells = < 0x0 >;
    				reg = < 0x9000 0x1000 >;
    				interrupts = < 0x9 0x1 >;
    				max-frequency = < 0x7a1200 >;
    				easydma-maxcnt-bits = < 0xd >;
    				status = "disabled";
    			};
    			spi2: spi@a000 {
    				compatible = "nordic,nrf-spim";
    				#address-cells = < 0x1 >;
    				#size-cells = < 0x0 >;
    				reg = < 0xa000 0x1000 >;
    				interrupts = < 0xa 0x1 >;
    				max-frequency = < 0x7a1200 >;
    				easydma-maxcnt-bits = < 0xd >;
    				status = "disabled";
    			};
    			spi3: spi@b000 {
    				compatible = "nordic,nrf-spim";
    				#address-cells = < 0x1 >;
    				#size-cells = < 0x0 >;
    				reg = < 0xb000 0x1000 >;
    				interrupts = < 0xb 0x1 >;
    				max-frequency = < 0x7a1200 >;
    				easydma-maxcnt-bits = < 0xd >;
    				status = "okay";
    				cs-gpios = < &gpio0 0x4 0x1 >;
    				pinctrl-0 = < &spi3_default >;
    				pinctrl-1 = < &spi3_sleep >;
    				pinctrl-names = "default", "sleep";
    				w25q128jv: w25q128jv@0 {
    					compatible = "jedec,spi-nor";
    					reg = < 0x0 >;
    					spi-max-frequency = < 0x2625a00 >;
    					size = < 0x8000000 >;
    					has-dpd;
    					t-enter-dpd = < 0xdac >;
    					t-exit-dpd = < 0xdac >;
    					jedec-id = [ EF 40 18 ];
    				};
    			};
    			pwm0: pwm@21000 {
    				compatible = "nordic,nrf-pwm";
    				reg = < 0x21000 0x1000 >;
    				interrupts = < 0x21 0x1 >;
    				status = "okay";
    				#pwm-cells = < 0x3 >;
    				pinctrl-0 = < &pwm0_default >;
    				pinctrl-1 = < &pwm0_sleep >;
    				pinctrl-names = "default", "sleep";
    			};
    			pwm1: pwm@22000 {
    				compatible = "nordic,nrf-pwm";
    				reg = < 0x22000 0x1000 >;
    				interrupts = < 0x22 0x1 >;
    				status = "disabled";
    				#pwm-cells = < 0x3 >;
    			};
    			pwm2: pwm@23000 {
    				compatible = "nordic,nrf-pwm";
    				reg = < 0x23000 0x1000 >;
    				interrupts = < 0x23 0x1 >;
    				status = "disabled";
    				#pwm-cells = < 0x3 >;
    			};
    			pwm3: pwm@24000 {
    				compatible = "nordic,nrf-pwm";
    				reg = < 0x24000 0x1000 >;
    				interrupts = < 0x24 0x1 >;
    				status = "disabled";
    				#pwm-cells = < 0x3 >;
    			};
    			gpio0: gpio@842500 {
    				compatible = "nordic,nrf-gpio";
    				gpio-controller;
    				reg = < 0x842500 0x300 >;
    				#gpio-cells = < 0x2 >;
    				status = "okay";
    				port = < 0x0 >;
    				gpiote-instance = < &gpiote >;
    				sense-edge-mask = < 0xffff >;
    				phandle = < 0x8 >;
    			};
    			rtc0: rtc@14000 {
    				compatible = "nordic,nrf-rtc";
    				reg = < 0x14000 0x1000 >;
    				cc-num = < 0x4 >;
    				interrupts = < 0x14 0x1 >;
    				status = "disabled";
    				clock-frequency = < 0x8000 >;
    				prescaler = < 0x1 >;
    			};
    			rtc1: rtc@15000 {
    				compatible = "nordic,nrf-rtc";
    				reg = < 0x15000 0x1000 >;
    				cc-num = < 0x4 >;
    				interrupts = < 0x15 0x1 >;
    				status = "disabled";
    				clock-frequency = < 0x8000 >;
    				prescaler = < 0x1 >;
    			};
    			clock: clock@5000 {
    				compatible = "nordic,nrf-clock";
    				reg = < 0x5000 0x1000 >;
    				interrupts = < 0x5 0x1 >;
    				status = "okay";
    			};
    			power: power@5000 {
    				compatible = "nordic,nrf-power";
    				reg = < 0x5000 0x1000 >;
    				ranges = < 0x0 0x5000 0x1000 >;
    				interrupts = < 0x5 0x1 >;
    				status = "okay";
    				#address-cells = < 0x1 >;
    				#size-cells = < 0x1 >;
    				gpregret1: gpregret1@51c {
    					#address-cells = < 0x1 >;
    					#size-cells = < 0x1 >;
    					compatible = "nordic,nrf-gpregret";
    					reg = < 0x51c 0x1 >;
    					status = "okay";
    				};
    				gpregret2: gpregret2@520 {
    					#address-cells = < 0x1 >;
    					#size-cells = < 0x1 >;
    					compatible = "nordic,nrf-gpregret";
    					reg = < 0x520 0x1 >;
    					status = "okay";
    				};
    			};
    			wdt: wdt0: watchdog@18000 {
    				compatible = "nordic,nrf-wdt";
    				reg = < 0x18000 0x1000 >;
    				interrupts = < 0x18 0x1 >;
    				status = "okay";
    			};
    			timer0: timer@f000 {
    				compatible = "nordic,nrf-timer";
    				status = "disabled";
    				reg = < 0xf000 0x1000 >;
    				cc-num = < 0x6 >;
    				max-bit-width = < 0x20 >;
    				interrupts = < 0xf 0x1 >;
    				prescaler = < 0x0 >;
    			};
    			timer1: timer@10000 {
    				compatible = "nordic,nrf-timer";
    				status = "disabled";
    				reg = < 0x10000 0x1000 >;
    				cc-num = < 0x6 >;
    				max-bit-width = < 0x20 >;
    				interrupts = < 0x10 0x1 >;
    				prescaler = < 0x0 >;
    				phandle = < 0xe >;
    			};
    			timer2: timer@11000 {
    				compatible = "nordic,nrf-timer";
    				status = "disabled";
    				reg = < 0x11000 0x1000 >;
    				cc-num = < 0x6 >;
    				max-bit-width = < 0x20 >;
    				interrupts = < 0x11 0x1 >;
    				prescaler = < 0x0 >;
    			};
    		};
    		gpiote: gpiote1: gpiote@40031000 {
    			compatible = "nordic,nrf-gpiote";
    			reg = < 0x40031000 0x1000 >;
    			interrupts = < 0x31 0x5 >;
    			status = "okay";
    			instance = < 0x1 >;
    			phandle = < 0xd >;
    		};
    	};
    	pinctrl: pin-controller {
    		compatible = "nordic,nrf-pinctrl";
    		uart0_default: uart0_default {
    			phandle = < 0x2 >;
    			group1 {
    				psels = < 0xb >, < 0x2000a >;
    			};
    		};
    		uart0_sleep: uart0_sleep {
    			phandle = < 0x3 >;
    			group1 {
    				psels = < 0xb >, < 0x2000a >;
    				low-power-enable;
    			};
    		};
    		uart1_default: uart1_default {
    			phandle = < 0x4 >;
    			group1 {
    				psels = < 0x18 >, < 0x20017 >;
    			};
    		};
    		uart1_sleep: uart1_sleep {
    			phandle = < 0x5 >;
    			group1 {
    				psels = < 0x18 >, < 0x20017 >;
    				low-power-enable;
    			};
    		};
    		i2c2_default: i2c2_default {
    			phandle = < 0x6 >;
    			group1 {
    				psels = < 0x180002 >, < 0x160001 >;
    			};
    		};
    		i2c2_sleep: i2c2_sleep {
    			phandle = < 0x7 >;
    			group1 {
    				psels = < 0x180002 >, < 0x160001 >;
    				low-power-enable;
    			};
    		};
    		pwm0_default: pwm0_default {
    			phandle = < 0xb >;
    			group1 {
    				psels = < 0x2c0019 >;
    			};
    		};
    		pwm0_sleep: pwm0_sleep {
    			phandle = < 0xc >;
    			group1 {
    				psels = < 0x2c0019 >;
    				low-power-enable;
    			};
    		};
    		spi3_default: spi3_default {
    			phandle = < 0x9 >;
    			group1 {
    				psels = < 0x80006 >, < 0xa0007 >, < 0xc0005 >;
    			};
    		};
    		spi3_sleep: spi3_sleep {
    			phandle = < 0xa >;
    			group1 {
    				psels = < 0x80006 >, < 0xa0007 >, < 0xc0005 >;
    				low-power-enable;
    			};
    		};
    	};
    	rng_hci: entropy_bt_hci {
    		compatible = "zephyr,bt-hci-entropy";
    		status = "okay";
    	};
    	sw_pwm: sw-pwm {
    		compatible = "nordic,nrf-sw-pwm";
    		status = "disabled";
    		generator = < &timer1 >;
    		clock-prescaler = < 0x0 >;
    		#pwm-cells = < 0x3 >;
    	};
    	cpus {
    		#address-cells = < 0x1 >;
    		#size-cells = < 0x0 >;
    		cpu@0 {
    			device_type = "cpu";
    			compatible = "arm,cortex-m33f";
    			reg = < 0x0 >;
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x1 >;
    			mpu: mpu@e000ed90 {
    				compatible = "arm,armv8m-mpu";
    				reg = < 0xe000ed90 0x40 >;
    			};
    		};
    	};
    	psa_rng: psa-rng {
    		compatible = "zephyr,psa-crypto-rng";
    		status = "okay";
    	};
    	buttons {
    		compatible = "gpio-keys";
    		button0: button_0 {
    			gpios = < &gpio0 0x3 0x1 >;
    			label = "Switch 1";
    			zephyr,code = < 0xb >;
    		};
    	};
    	reserved-memory {
    		#address-cells = < 0x1 >;
    		#size-cells = < 0x1 >;
    		ranges;
    		sram0_s: image_s@20000000 {
    			reg = < 0x20000000 0x16000 >;
    		};
    		sram0_modem: image_modem@20016000 {
    			reg = < 0x20016000 0xa000 >;
    		};
    		sram0_ns: image_ns@20020000 {
    			reg = < 0x20020000 0x20000 >;
    		};
    	};
    };
    

    This is for the application side.

    Are you using internal pull-resistors on your SDA/SCL lines?

    No I am not. I'm using external 20k resistors.

  • Hi,

     

    Sorry that it is taking a bit of time, I just wanted to update you to say that I haven't forgotten about your inquiries.

    I'm checking with your PMIC team and I'll try to get back to you within a couple of business days.

     

    Kind regards,

    Håkon

  • Hi  

    Sounds good. I'm working on some things on my end. I've isolated the nPM1300 by itself along side the only other I2C device on the bus. (basically populated only one side of the board) With both combined in the lowest active sleep I'm getting about 1uA which is what I expect from that group of circuitry. I did see the latch condition occur while probing the different signals. I will try to get it to happen with the accelerometer removed.

    With that said, seems like an issue on the top layer which includes a SPI NOR flash and nRF9161. Looking into it more.

  • Here is the nPM1300 solo with the latched I2C interface:

    Simply using a Fluke179 and measuring between SCL & SDA. It is resolved with reprogramming the devices via I2C. Maybe related to [27] BUCK: Programming BUCK voltage increases current consumption? Since it increases about 1mA.

    I'll assemble the other side of these boards and see where I can get with the sleep current.

    With all of this being said, looks like the added unexpected current is *not* the nPM1300. I will work on it a bit more and update or close as needed.

Related