Only spi nodes accepted in /soc/spi@40023000/

I'm running in to the issue mentioned in the tile; "Only spi nodes accepted in /soc/spi@40023000/". I'm using nRF connect and built a driver for the TI ADS1291 analog front end but I'm facing this error and I'm unable to find any documentation. I've compared it as much as possible with the ADXL372 example but the in and outputs seem the same to me.

I added a ti,ads1291.yaml file at dts/bindings/ and added "set(DTS_ROOT dts)" to CMakeLists.txt with the following contents:

# A high level description of the device the binding applies to:
description: |
   This is the TI ADS1291

# Used to match nodes to this binding as discussed above:
compatible: "ti,ads1291"

include: spi-device.yaml

properties:
    int1-gpios:
      type: phandle-array
      required: false
      description: |
        The INT1 signal defaults to active low as produced by the
        sensor.  The property value should ensure the flags properly
        describe the signal that is presented to the driver.
s

I also added the ADS1291 by means of an overlay to the nrf52dk_nrf52832 devicetree:

&spi2 {
	cs-gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
	ads1291@0 {
		compatible = "ti,ads1291";
		reg = <0>;
		spi-max-frequency = <2000000>;
		label = "ADS1291";
		int1-gpios = <&gpio0 31 GPIO_ACTIVE_LOW>;
	};
};

I enabled my custom driver from prj.conf: 

CONFIG_ADS1291=y

The build system seems to pick up the config correctly:

 *   61  /soc/spi@40023000
 *   62  /soc/spi@40023000/ads1291@0
I've also attached a logic analyser to the GPIO pins don't see any SPI data. I do see SPI data when I flash the ADXL372 example.
I must have missed a config step somewhere, can anyone please help in pointing out what I missed?
Thanks
Parents
  • Hello!

    Can you show me how the spi2 node looks in your devicetree (in the build/zephyr/zephyr.dts file) when you have compiled the ADXL372 and the ADS1291 projects?

    If there is a difference it might help you spot what you have missed.

    On my end it looks like this in the ADXL372 project:

    spi2: arduino_spi: spi@40023000 {
    	#address-cells = < 0x1 >;
    	#size-cells = < 0x0 >;
    	reg = < 0x40023000 0x1000 >;
    	interrupts = < 0x23 0x1 >;
    	status = "okay";
    	label = "SPI_2";
    	compatible = "nordic,nrf-spi";
    	sck-pin = < 0x19 >;
    	mosi-pin = < 0x17 >;
    	miso-pin = < 0x18 >;
    	cs-gpios = < &gpio0 0x16 0x1 >;
    	adxl372@0 {
    		compatible = "adi,adxl372";
    		reg = < 0x0 >;
    		spi-max-frequency = < 0x7a1200 >;
    		label = "ADXL372";
    		int1-gpios = < &gpio0 0xb 0x0 >;
    	};
    };

    Best regards,

    Einar

  • Hi, thanks for looking in to this.

    For my custom project it looks like this:

    		spi2: arduino_spi: spi@40023000 {
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x0 >;
    			reg = < 0x40023000 0x1000 >;
    			interrupts = < 0x23 0x1 >;
    			status = "okay";
    			label = "SPI_2";
    			compatible = "nordic,nrf-spi";
    			sck-pin = < 0x19 >;
    			mosi-pin = < 0x17 >;
    			miso-pin = < 0x18 >;
    			cs-gpios = < &gpio0 0x4 0x1 >;
    			ads1291@0 {
    				compatible = "ti,ads1291";
    				reg = < 0x0 >;
    				spi-max-frequency = < 0x1e8480 >;
    				label = "ADS1291";
    				int1-gpios = < &gpio0 0x1f 0x1 >;
    			};
    		};

    The example looks similar to yours but some of the gpios are different. 

    		spi2: arduino_spi: spi@40023000 {
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x0 >;
    			reg = < 0x40023000 0x1000 >;
    			interrupts = < 0x23 0x1 >;
    			status = "okay";
    			label = "SPI_2";
    			compatible = "nordic,nrf-spi";
    			sck-pin = < 0x19 >;
    			mosi-pin = < 0x17 >;
    			miso-pin = < 0x18 >;
    			cs-gpios = < &gpio0 0x16 0x1 >;
    			adxl372@0 {
    				compatible = "adi,adxl372";
    				reg = < 0x0 >;
    				spi-max-frequency = < 0x7a1200 >;
    				label = "ADXL372";
    				int1-gpios = < &gpio0 0xb 0x0 >;
    			};
    		};

    I don't see any significant differences between my custom one and the example..

Reply
  • Hi, thanks for looking in to this.

    For my custom project it looks like this:

    		spi2: arduino_spi: spi@40023000 {
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x0 >;
    			reg = < 0x40023000 0x1000 >;
    			interrupts = < 0x23 0x1 >;
    			status = "okay";
    			label = "SPI_2";
    			compatible = "nordic,nrf-spi";
    			sck-pin = < 0x19 >;
    			mosi-pin = < 0x17 >;
    			miso-pin = < 0x18 >;
    			cs-gpios = < &gpio0 0x4 0x1 >;
    			ads1291@0 {
    				compatible = "ti,ads1291";
    				reg = < 0x0 >;
    				spi-max-frequency = < 0x1e8480 >;
    				label = "ADS1291";
    				int1-gpios = < &gpio0 0x1f 0x1 >;
    			};
    		};

    The example looks similar to yours but some of the gpios are different. 

    		spi2: arduino_spi: spi@40023000 {
    			#address-cells = < 0x1 >;
    			#size-cells = < 0x0 >;
    			reg = < 0x40023000 0x1000 >;
    			interrupts = < 0x23 0x1 >;
    			status = "okay";
    			label = "SPI_2";
    			compatible = "nordic,nrf-spi";
    			sck-pin = < 0x19 >;
    			mosi-pin = < 0x17 >;
    			miso-pin = < 0x18 >;
    			cs-gpios = < &gpio0 0x16 0x1 >;
    			adxl372@0 {
    				compatible = "adi,adxl372";
    				reg = < 0x0 >;
    				spi-max-frequency = < 0x7a1200 >;
    				label = "ADXL372";
    				int1-gpios = < &gpio0 0xb 0x0 >;
    			};
    		};

    I don't see any significant differences between my custom one and the example..

Children
Related