High current consuption using BME280 on Seeed Xiao BLE (nRF52840) in Zephyr RTOS

Hi,

I'm developing an IoT product using nRF52840 provided by Seeed (Xiao BLE) with a BME280 sensor connected via I2C on a custom PCB, without another peripheral that BME280 and passive components for I2C connection. I can't get low power consumption, even if I try the system_off Zephyr example.

When I try the bme_280 example of Zephyr and enable the PM/PM_DEVICE features, the consumption is still so high (about 1mA). I need that it consumes a few hundred uA . An strange ripple between BME280 measurements is seen when I measure current using PPK2:

  • My config file:

-

CONFIG_SENSOR=y
CONFIG_PM=y
CONFIG_PM_DEVICE=y

  • I2C circuit Diagram (VCC=3V3):

  • Overlay file:

&i2c1 {
	status = "okay";
	bme280@76 {
		compatible = "bosch,bme280";
		reg = <0x76>;
	};
};

  • Zephyr version: 3.2.99
  • nRF Connect version:2.3.0

I also tried:

I don't know what can I try.

Thanks

  • Hi there,

    1. Could you share your schematics?
    2. Can you try to reproduce the same with our development kit connected to the BME280 sensor?
    3. How is the PPK2 connected to your custom board? 

    even if I try the system_off Zephyr example.

    Can you share a PPK2 trace from this? 

    regards

    Jared 

  • What version of the SDK are you using? Also, can you share the output DeviceTree file for your build? You should be able to find it in build/zephyr/zephyr.dts

  • Hi Jared,

    1) Here is my schematics:

    It's just a XIAO BLE connected to a SMD BME280 and electronic stuff (needed to connect BME280 via I2C, according to its datasheet (https://www.bosch-sensortec.com/products/environmental-sensors/humidity-sensors-bme280/).

    2)I'm sorry, I've not the nRF52840DK in my possession.

    3)I connect the PPK as source meter, directly to XIAO BLE BAT pins with 3V3. (here is the Xiao schematic https://files.seeedstudio.com/wiki/XIAO-BLE/Seeed-Studio-XIAO-nRF52840-Sense-v1.1.pdf)

    I could solve the ripple, by adding manually pm functions as follows:

    			pm_device_state_get(dev, &bme280_state);
    			if (bme280_state == PM_DEVICE_STATE_SUSPENDED)
    			{
    				pm_device_action_run(dev, PM_DEVICE_ACTION_RESUME);
    			}
    			reftime_1 = k_uptime_get();
    			sensor_sample_fetch(dev);
    			pm_device_action_run(dev, PM_DEVICE_ACTION_SUSPEND);

    This has improved the consumption, but it's still high in idle thread (about 450uA):

    And here is the SYSTEM OFF sample PPK2 trace, with 200uA consumption:

  • I'm using 2.3.0 version. 

    Here is the dts output:. I've disabled spi3 because of the Seeed XIao external flash, that has an extra consumption.

    /dts-v1/;
    
    / {
    	#address-cells = < 0x1 >;
    	#size-cells = < 0x1 >;
    	model = "Seeed XIAO BLE";
    	compatible = "seeed,xiao-ble";
    	chosen {
    		zephyr,entropy = &cryptocell;
    		zephyr,flash-controller = &flash_controller;
    		zephyr,console = &usb_cdc_acm_uart;
    		zephyr,shell-uart = &usb_cdc_acm_uart;
    		zephyr,uart-mcumgr = &usb_cdc_acm_uart;
    		zephyr,bt-mon-uart = &usb_cdc_acm_uart;
    		zephyr,bt-c2h-uart = &usb_cdc_acm_uart;
    		zephyr,sram = &sram0;
    		zephyr,flash = &flash0;
    		zephyr,code-partition = &code_partition;
    		zephyr,ieee802154 = &ieee802154;
    	};
    	aliases {
    		led0 = &led0;
    		led1 = &led1;
    		led2 = &led2;
    		pwm-led0 = &pwm_led0;
    		bootloader-led0 = &led0;
    		mcuboot-led0 = &led0;
    		watchdog0 = &wdt0;
    		spi-flash0 = &p25q16h_spi;
    		sw0 = &button0;
    		sw1 = &button1;
    	};
    	soc {
    		#address-cells = < 0x1 >;
    		#size-cells = < 0x1 >;
    		compatible = "nordic,nRF52840-QIAA", "nordic,nRF52840", "nordic,nRF52", "simple-bus";
    		interrupt-parent = < &nvic >;
    		ranges;
    		nvic: interrupt-controller@e000e100 {
    			#address-cells = < 0x1 >;
    			compatible = "arm,v7m-nvic";
    			reg = < 0xe000e100 0xc00 >;
    			interrupt-controller;
    			#interrupt-cells = < 0x2 >;
    			arm,num-irq-priority-bits = < 0x3 >;
    			phandle = < 0x1 >;
    		};
    		systick: timer@e000e010 {
    			compatible = "arm,armv7m-systick";
    			reg = < 0xe000e010 0x10 >;
    			status = "disabled";
    		};
    		ficr: ficr@10000000 {
    			compatible = "nordic,nrf-ficr";
    			reg = < 0x10000000 0x1000 >;
    			status = "okay";
    		};
    		uicr: uicr@10001000 {
    			compatible = "nordic,nrf-uicr";
    			reg = < 0x10001000 0x1000 >;
    			status = "okay";
    		};
    		sram0: memory@20000000 {
    			compatible = "mmio-sram";
    			reg = < 0x20000000 0x40000 >;
    		};
    		clock: clock@40000000 {
    			compatible = "nordic,nrf-clock";
    			reg = < 0x40000000 0x1000 >;
    			interrupts = < 0x0 0x1 >;
    			status = "okay";
    		};
    		power: power@40000000 {
    			compatible = "nordic,nrf-power";
    			reg = < 0x40000000 0x1000 >;
    			interrupts = < 0x0 0x1 >;
    			status = "okay";
    		};
    		radio: radio@40001000 {
    			compatible = "nordic,nrf-radio";
    			reg = < 0x40001000 0x1000 >;
    			interrupts = < 0x1 0x1 >;
    			status = "okay";
    			ieee802154-supported;
    			ble-2mbps-supported;
    			ble-coded-phy-supported;
    			tx-high-power-supported;
    			ieee802154: ieee802154 {
    				compatible = "nordic,nrf-ieee802154";
    				status = "okay";
    			};
    		};
    		uart0: xiao_serial: uart@40002000 {
    			compatible = "nordic,nrf-uarte";
    			reg = < 0x40002000 0x1000 >;
    			interrupts = < 0x2 0x1 >;
    			status = "okay";
    			current-speed = < 0x1c200 >;
    			pinctrl-0 = < &uart0_default >;
    			pinctrl-1 = < &uart0_sleep >;
    			pinctrl-names = "default", "sleep";
    		};
    		i2c0: i2c@40003000 {
    			compatible = "nordic,nrf-twim";
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x0 >;
    			reg = < 0x40003000 0x1000 >;
    			clock-frequency = < 0x186a0 >;
    			interrupts = < 0x3 0x1 >;
    			status = "disabled";
    		};
    		spi0: xiao_spi: spi@40003000 {
    			compatible = "nordic,nrf-spi";
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x0 >;
    			reg = < 0x40003000 0x1000 >;
    			interrupts = < 0x3 0x1 >;
    			max-frequency = < 0x7a1200 >;
    			status = "okay";
    			pinctrl-0 = < &spi0_default >;
    			pinctrl-1 = < &spi0_sleep >;
    			pinctrl-names = "default", "sleep";
    		};
    		i2c1: xiao_i2c: i2c@40004000 {
    			compatible = "nordic,nrf-twi";
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x0 >;
    			reg = < 0x40004000 0x1000 >;
    			clock-frequency = < 0x186a0 >;
    			interrupts = < 0x4 0x1 >;
    			status = "okay";
    			pinctrl-0 = < &i2c1_default >;
    			pinctrl-1 = < &i2c1_sleep >;
    			pinctrl-names = "default", "sleep";
    			bme280@76 {
    				compatible = "bosch,bme280";
    				reg = < 0x76 >;
    			};
    		};
    		spi1: spi@40004000 {
    			compatible = "nordic,nrf-spim";
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x0 >;
    			reg = < 0x40004000 0x1000 >;
    			interrupts = < 0x4 0x1 >;
    			max-frequency = < 0x7a1200 >;
    			status = "disabled";
    		};
    		nfct: nfct@40005000 {
    			compatible = "nordic,nrf-nfct";
    			reg = < 0x40005000 0x1000 >;
    			interrupts = < 0x5 0x1 >;
    			status = "disabled";
    		};
    		gpiote: gpiote@40006000 {
    			compatible = "nordic,nrf-gpiote";
    			reg = < 0x40006000 0x1000 >;
    			interrupts = < 0x6 0x5 >;
    			status = "okay";
    		};
    		adc: adc@40007000 {
    			compatible = "nordic,nrf-saadc";
    			reg = < 0x40007000 0x1000 >;
    			interrupts = < 0x7 0x1 >;
    			status = "okay";
    			#io-channel-cells = < 0x1 >;
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x0 >;
    			phandle = < 0x10 >;
    			channel@7 {
    				reg = < 0x7 >;
    				zephyr,gain = "ADC_GAIN_1_5";
    				zephyr,reference = "ADC_REF_INTERNAL";
    				zephyr,vref-mv = < 0x2ee >;
    				zephyr,acquisition-time = < 0x0 >;
    				zephyr,input-positive = < 0x8 >;
    				zephyr,resolution = < 0xc >;
    			};
    		};
    		timer0: timer@40008000 {
    			compatible = "nordic,nrf-timer";
    			status = "okay";
    			reg = < 0x40008000 0x1000 >;
    			cc-num = < 0x4 >;
    			interrupts = < 0x8 0x1 >;
    			prescaler = < 0x0 >;
    		};
    		timer1: timer@40009000 {
    			compatible = "nordic,nrf-timer";
    			status = "okay";
    			reg = < 0x40009000 0x1000 >;
    			cc-num = < 0x4 >;
    			interrupts = < 0x9 0x1 >;
    			prescaler = < 0x0 >;
    		};
    		timer2: timer@4000a000 {
    			compatible = "nordic,nrf-timer";
    			status = "okay";
    			reg = < 0x4000a000 0x1000 >;
    			cc-num = < 0x4 >;
    			interrupts = < 0xa 0x1 >;
    			prescaler = < 0x0 >;
    			phandle = < 0xd >;
    		};
    		rtc0: rtc@4000b000 {
    			compatible = "nordic,nrf-rtc";
    			reg = < 0x4000b000 0x1000 >;
    			cc-num = < 0x3 >;
    			interrupts = < 0xb 0x1 >;
    			status = "okay";
    			clock-frequency = < 0x8000 >;
    			prescaler = < 0x1 >;
    		};
    		temp: temp@4000c000 {
    			compatible = "nordic,nrf-temp";
    			reg = < 0x4000c000 0x1000 >;
    			interrupts = < 0xc 0x1 >;
    			status = "okay";
    		};
    		rng: random@4000d000 {
    			compatible = "nordic,nrf-rng";
    			reg = < 0x4000d000 0x1000 >;
    			interrupts = < 0xd 0x1 >;
    			status = "okay";
    		};
    		ecb: ecb@4000e000 {
    			compatible = "nordic,nrf-ecb";
    			reg = < 0x4000e000 0x1000 >;
    			interrupts = < 0xe 0x1 >;
    			status = "okay";
    		};
    		ccm: ccm@4000f000 {
    			compatible = "nordic,nrf-ccm";
    			reg = < 0x4000f000 0x1000 >;
    			interrupts = < 0xf 0x1 >;
    			length-field-length-8-bits;
    			status = "okay";
    		};
    		wdt: wdt0: watchdog@40010000 {
    			compatible = "nordic,nrf-wdt";
    			reg = < 0x40010000 0x1000 >;
    			interrupts = < 0x10 0x1 >;
    			status = "okay";
    		};
    		rtc1: rtc@40011000 {
    			compatible = "nordic,nrf-rtc";
    			reg = < 0x40011000 0x1000 >;
    			cc-num = < 0x4 >;
    			interrupts = < 0x11 0x1 >;
    			status = "okay";
    			clock-frequency = < 0x8000 >;
    			prescaler = < 0x1 >;
    		};
    		qdec: qdec0: qdec@40012000 {
    			compatible = "nordic,nrf-qdec";
    			reg = < 0x40012000 0x1000 >;
    			interrupts = < 0x12 0x1 >;
    			status = "disabled";
    		};
    		comp: comparator@40013000 {
    			compatible = "nordic,nrf-comp";
    			reg = < 0x40013000 0x1000 >;
    			interrupts = < 0x13 0x1 >;
    			status = "disabled";
    			#io-channel-cells = < 0x1 >;
    		};
    		egu0: swi0: egu@40014000 {
    			compatible = "nordic,nrf-egu", "nordic,nrf-swi";
    			reg = < 0x40014000 0x1000 >;
    			interrupts = < 0x14 0x1 >;
    			status = "okay";
    		};
    		egu1: swi1: egu@40015000 {
    			compatible = "nordic,nrf-egu", "nordic,nrf-swi";
    			reg = < 0x40015000 0x1000 >;
    			interrupts = < 0x15 0x1 >;
    			status = "okay";
    		};
    		egu2: swi2: egu@40016000 {
    			compatible = "nordic,nrf-egu", "nordic,nrf-swi";
    			reg = < 0x40016000 0x1000 >;
    			interrupts = < 0x16 0x1 >;
    			status = "okay";
    		};
    		egu3: swi3: egu@40017000 {
    			compatible = "nordic,nrf-egu", "nordic,nrf-swi";
    			reg = < 0x40017000 0x1000 >;
    			interrupts = < 0x17 0x1 >;
    			status = "okay";
    		};
    		egu4: swi4: egu@40018000 {
    			compatible = "nordic,nrf-egu", "nordic,nrf-swi";
    			reg = < 0x40018000 0x1000 >;
    			interrupts = < 0x18 0x1 >;
    			status = "okay";
    		};
    		egu5: swi5: egu@40019000 {
    			compatible = "nordic,nrf-egu", "nordic,nrf-swi";
    			reg = < 0x40019000 0x1000 >;
    			interrupts = < 0x19 0x1 >;
    			status = "okay";
    		};
    		timer3: timer@4001a000 {
    			compatible = "nordic,nrf-timer";
    			status = "okay";
    			reg = < 0x4001a000 0x1000 >;
    			cc-num = < 0x6 >;
    			interrupts = < 0x1a 0x1 >;
    			prescaler = < 0x0 >;
    		};
    		timer4: timer@4001b000 {
    			compatible = "nordic,nrf-timer";
    			status = "okay";
    			reg = < 0x4001b000 0x1000 >;
    			cc-num = < 0x6 >;
    			interrupts = < 0x1b 0x1 >;
    			prescaler = < 0x0 >;
    		};
    		pwm0: pwm@4001c000 {
    			compatible = "nordic,nrf-pwm";
    			reg = < 0x4001c000 0x1000 >;
    			interrupts = < 0x1c 0x1 >;
    			status = "okay";
    			#pwm-cells = < 0x3 >;
    			pinctrl-0 = < &pwm0_default >;
    			pinctrl-1 = < &pwm0_sleep >;
    			pinctrl-names = "default", "sleep";
    			phandle = < 0xf >;
    		};
    		pdm0: pdm@4001d000 {
    			compatible = "nordic,nrf-pdm";
    			reg = < 0x4001d000 0x1000 >;
    			interrupts = < 0x1d 0x1 >;
    			status = "disabled";
    		};
    		acl: acl@4001e000 {
    			compatible = "nordic,nrf-acl";
    			reg = < 0x4001e000 0x1000 >;
    			status = "okay";
    		};
    		flash_controller: flash-controller@4001e000 {
    			compatible = "nordic,nrf52-flash-controller";
    			reg = < 0x4001e000 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 >;
    					sd_partition: partition@0 {
    						label = "softdevice";
    						reg = < 0x0 0x27000 >;
    					};
    					code_partition: partition@27000 {
    						label = "code_partition";
    						reg = < 0x27000 0xc5000 >;
    					};
    					storage_partition: partition@ec000 {
    						label = "storage";
    						reg = < 0xec000 0x8000 >;
    					};
    					boot_partition: partition@f4000 {
    						label = "adafruit_boot";
    						reg = < 0xf4000 0xc000 >;
    					};
    				};
    			};
    		};
    		ppi: ppi@4001f000 {
    			compatible = "nordic,nrf-ppi";
    			reg = < 0x4001f000 0x1000 >;
    			status = "okay";
    		};
    		mwu: mwu@40020000 {
    			compatible = "nordic,nrf-mwu";
    			reg = < 0x40020000 0x1000 >;
    			status = "okay";
    		};
    		pwm1: pwm@40021000 {
    			compatible = "nordic,nrf-pwm";
    			reg = < 0x40021000 0x1000 >;
    			interrupts = < 0x21 0x1 >;
    			status = "disabled";
    			#pwm-cells = < 0x3 >;
    		};
    		pwm2: pwm@40022000 {
    			compatible = "nordic,nrf-pwm";
    			reg = < 0x40022000 0x1000 >;
    			interrupts = < 0x22 0x1 >;
    			status = "disabled";
    			#pwm-cells = < 0x3 >;
    		};
    		spi2: spi@40023000 {
    			compatible = "nordic,nrf-spim";
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x0 >;
    			reg = < 0x40023000 0x1000 >;
    			interrupts = < 0x23 0x1 >;
    			max-frequency = < 0x7a1200 >;
    			status = "disabled";
    		};
    		rtc2: rtc@40024000 {
    			compatible = "nordic,nrf-rtc";
    			reg = < 0x40024000 0x1000 >;
    			cc-num = < 0x4 >;
    			interrupts = < 0x24 0x1 >;
    			status = "okay";
    			clock-frequency = < 0x8000 >;
    			prescaler = < 0x1 >;
    		};
    		i2s0: i2s@40025000 {
    			compatible = "nordic,nrf-i2s";
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x0 >;
    			reg = < 0x40025000 0x1000 >;
    			interrupts = < 0x25 0x1 >;
    			status = "disabled";
    		};
    		usbd: zephyr_udc0: usbd@40027000 {
    			compatible = "nordic,nrf-usbd";
    			reg = < 0x40027000 0x1000 >;
    			interrupts = < 0x27 0x1 >;
    			num-bidir-endpoints = < 0x1 >;
    			num-in-endpoints = < 0x7 >;
    			num-out-endpoints = < 0x7 >;
    			num-isoin-endpoints = < 0x1 >;
    			num-isoout-endpoints = < 0x1 >;
    			status = "okay";
    			usb_cdc_acm_uart: cdc-acm-uart {
    				compatible = "zephyr,cdc-acm-uart";
    			};
    		};
    		uart1: uart@40028000 {
    			compatible = "nordic,nrf-uarte";
    			reg = < 0x40028000 0x1000 >;
    			interrupts = < 0x28 0x1 >;
    			status = "disabled";
    		};
    		qspi: qspi@40029000 {
    			compatible = "nordic,nrf-qspi";
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x0 >;
    			reg = < 0x40029000 0x1000 >, < 0x12000000 0x8000000 >;
    			reg-names = "qspi", "qspi_mm";
    			interrupts = < 0x29 0x1 >;
    			status = "disabled";
    		};
    		pwm3: pwm@4002d000 {
    			compatible = "nordic,nrf-pwm";
    			reg = < 0x4002d000 0x1000 >;
    			interrupts = < 0x2d 0x1 >;
    			status = "disabled";
    			#pwm-cells = < 0x3 >;
    		};
    		spi3: spi@4002f000 {
    			compatible = "nordic,nrf-spim";
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x0 >;
    			reg = < 0x4002f000 0x1000 >;
    			interrupts = < 0x2f 0x1 >;
    			max-frequency = < 0x1e84800 >;
    			rx-delay-supported;
    			rx-delay = < 0x2 >;
    			status = "disabled";
    			pinctrl-0 = < &spi3_default >;
    			pinctrl-1 = < &spi3_sleep >;
    			pinctrl-names = "default", "sleep";
    			cs-gpios = < &gpio0 0x19 0x1 >;
    			p25q16h_spi: p25q16h@0 {
    				compatible = "jedec,spi-nor";
    				reg = < 0x0 >;
    				wp-gpios = < &gpio0 0x16 0x1 >;
    				hold-gpios = < &gpio0 0x17 0x1 >;
    				spi-max-frequency = < 0x632ea00 >;
    				jedec-id = [ 85 60 15 ];
    				sfdp-bfp = [ E5 20 F1 FF FF FF FF 00 44 EB 08 6B 08 3B 80 BB EE FF FF FF FF FF 00 FF FF FF 00 FF 0C 20 0F 52 10 D8 08 81 ];
    				size = < 0x1000000 >;
    				has-dpd;
    				t-enter-dpd = < 0xbb8 >;
    				t-exit-dpd = < 0x1f40 >;
    			};
    		};
    		gpio0: gpio@50000000 {
    			compatible = "nordic,nrf-gpio";
    			gpio-controller;
    			reg = < 0x50000000 0x200 0x50000500 0x300 >;
    			#gpio-cells = < 0x2 >;
    			status = "okay";
    			port = < 0x0 >;
    			sense-edge-mask = < 0xffffffff >;
    			phandle = < 0xc >;
    		};
    		gpio1: gpio@50000300 {
    			compatible = "nordic,nrf-gpio";
    			gpio-controller;
    			reg = < 0x50000300 0x200 0x50000800 0x300 >;
    			#gpio-cells = < 0x2 >;
    			ngpios = < 0x10 >;
    			status = "okay";
    			port = < 0x1 >;
    			phandle = < 0xe >;
    		};
    		cryptocell: crypto@5002a000 {
    			compatible = "nordic,nrf-cc310";
    			reg = < 0x5002a000 0x1000 >;
    			status = "okay";
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x1 >;
    			cryptocell310: crypto@5002b000 {
    				compatible = "arm,cryptocell-310";
    				reg = < 0x5002b000 0x1000 >;
    				interrupts = < 0x2a 0x1 >;
    			};
    		};
    	};
    	pinctrl: pin-controller {
    		compatible = "nordic,nrf-pinctrl";
    		uart0_default: uart0_default {
    			phandle = < 0x2 >;
    			group1 {
    				psels = < 0x2b >;
    			};
    			group2 {
    				psels = < 0x1002c >;
    				bias-pull-up;
    			};
    		};
    		uart0_sleep: uart0_sleep {
    			phandle = < 0x3 >;
    			group1 {
    				psels = < 0x2b >, < 0x1002c >;
    				low-power-enable;
    			};
    		};
    		i2c1_default: i2c1_default {
    			phandle = < 0x6 >;
    			group1 {
    				psels = < 0xc0004 >, < 0xb0005 >;
    			};
    		};
    		i2c1_sleep: i2c1_sleep {
    			phandle = < 0x7 >;
    			group1 {
    				psels = < 0xc0004 >, < 0xb0005 >;
    				low-power-enable;
    			};
    		};
    		pwm0_default: pwm0_default {
    			phandle = < 0x8 >;
    			group1 {
    				psels = < 0x160011 >;
    				nordic,invert;
    			};
    		};
    		pwm0_sleep: pwm0_sleep {
    			phandle = < 0x9 >;
    			group1 {
    				psels = < 0x160011 >;
    				low-power-enable;
    			};
    		};
    		spi0_default: spi0_default {
    			phandle = < 0x4 >;
    			group1 {
    				psels = < 0x4002d >, < 0x5002f >, < 0x6002e >;
    			};
    		};
    		spi0_sleep: spi0_sleep {
    			phandle = < 0x5 >;
    			group1 {
    				psels = < 0x4002d >, < 0x5002f >, < 0x6002e >;
    				low-power-enable;
    			};
    		};
    		spi3_default: spi3_default {
    			phandle = < 0xa >;
    			group1 {
    				psels = < 0x40015 >, < 0x50014 >, < 0x60018 >;
    			};
    		};
    		spi3_sleep: spi3_sleep {
    			phandle = < 0xb >;
    			group1 {
    				psels = < 0x40015 >, < 0x50014 >, < 0x60018 >;
    				low-power-enable;
    			};
    		};
    		qspi_default: qspi_default {
    			group1 {
    				psels = < 0x1d0015 >, < 0x1f0014 >, < 0x200018 >, < 0x210016 >, < 0x220017 >, < 0x1e0019 >;
    			};
    		};
    		qspi_sleep: qspi_sleep {
    			group1 {
    				psels = < 0x1d0015 >, < 0x1f0014 >, < 0x200018 >, < 0x210016 >, < 0x220017 >, < 0x1e0019 >;
    				low-power-enable;
    			};
    		};
    	};
    	rng_hci: entropy_bt_hci {
    		compatible = "zephyr,bt-hci-entropy";
    		status = "okay";
    	};
    	cpus {
    		#address-cells = < 0x1 >;
    		#size-cells = < 0x0 >;
    		cpu@0 {
    			device_type = "cpu";
    			compatible = "arm,cortex-m4f";
    			reg = < 0x0 >;
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x1 >;
    			itm: itm@e0000000 {
    				compatible = "arm,armv7m-itm";
    				reg = < 0xe0000000 0x1000 >;
    				swo-ref-frequency = < 0x1e84800 >;
    			};
    		};
    	};
    	sw_pwm: sw-pwm {
    		compatible = "nordic,nrf-sw-pwm";
    		status = "disabled";
    		generator = < &timer2 >;
    		clock-prescaler = < 0x0 >;
    		#pwm-cells = < 0x3 >;
    	};
    	xiao_d: connector {
    		compatible = "seeed,xiao-gpio";
    		#gpio-cells = < 0x2 >;
    		gpio-map-mask = < 0xffffffff 0xffffffc0 >;
    		gpio-map-pass-thru = < 0x0 0x3f >;
    		gpio-map = < 0x0 0x0 &gpio0 0x2 0x0 >, < 0x1 0x0 &gpio0 0x3 0x0 >, < 0x2 0x0 &gpio0 0x1c 0x0 >, < 0x3 0x0 &gpio0 0x1d 0x0 >, < 0x4 0x0 &gpio0 0x4 0x0 >, < 0x5 0x0 &gpio0 0x5 0x0 >, < 0x6 0x0 &gpio1 0xb 0x0 >, < 0x7 0x0 &gpio1 0xc 0x0 >, < 0x8 0x0 &gpio1 0xd 0x0 >, < 0x9 0x0 &gpio1 0xe 0x0 >, < 0xa 0x0 &gpio1 0xf 0x0 >;
    	};
    	leds {
    		compatible = "gpio-leds";
    		led0: led_0 {
    			gpios = < &gpio0 0x1a 0x1 >;
    			label = "Red LED";
    		};
    		led1: led_1 {
    			gpios = < &gpio0 0x1e 0x1 >;
    			label = "Green LED";
    		};
    		led2: led_2 {
    			gpios = < &gpio0 0x6 0x1 >;
    			label = "Blue LED";
    		};
    	};
    	pwmleds {
    		compatible = "pwm-leds";
    		pwm_led0: pwm_led_0 {
    			pwms = < &pwm0 0x0 0x1312d00 0x1 >;
    		};
    	};
    	zephyr,user {
    		io-channels = < &adc 0x7 >;
    	};
    	buttons {
    		compatible = "gpio-keys";
    		status = "okay";
    		button0: button_0 {
    			gpios = < &gpio0 0x2 0x11 >;
    			label = "Reset button";
    		};
    		button1: button_1 {
    			gpios = < &gpio0 0xe 0x11 >;
    			label = "VBAT_PIN";
    		};
    	};
    };
    

    Regards

Related