problem with spi_transceive between 1.4.9 version to 1.9.0 version

Hello,

We use pin 4 to set our CHIP SELECT in order to perform spi_transceive.

We use the SPI protocol to "talk" between a microcontroller and the LSM6DSL component.

It is important to note that on software version 1.4.9 it works fine and when we put it on version 1.9.0 it does not work properly.

I tried to take from a link that I saw in this forum and put it in our code but it does not help.

https://github.com/sigurdnev/ncs-playground/tree/master/samples

The only difference that exists is between the two DTS files of the versions.

Attached DTS file of version 1.9.0 :

Parents
  • /*
     * Copyright (c) 2018-2020 Nordic Semiconductor ASA
     *
     * SPDX-License-Identifier: Apache-2.0
     */
    
    / {
    	model = "Nordic nRF9160 DK NRF9160";
    	compatible = "nordic,nrf9160-dk-nrf9160";
    
    	chosen {
    		zephyr,console = &uart0;
    		zephyr,shell-uart = &uart0;
    		zephyr,uart-mcumgr = &uart0;
    	};
    	
    	leds {
    		compatible = "gpio-leds";
    		led0: led_0 {
    			gpios = <&gpio0 2 0>;
    			label = "Green LED 1";
    		};
    		led1: led_1 {
    			gpios = <&gpio0 3 0>;
    			label = "Green LED 2";
    		};
    		led2: led_2 {
    			gpios = <&gpio0 2 0>;
    			label = "Green LED 3";
    		};
    		led3: led_3 {
    			gpios = <&gpio0 5 0>;
    			label = "Green LED 4";
    		};
    	};
    
    	pwmleds {
    		compatible = "pwm-leds";
    		pwm_led0: pwm_led_0 {
    			pwms = <&pwm0 12>;
    		};
    	};
    
    	buttons {
    		/*
    		 * Unlike most DK boards, we do not actually have 4 buttons
    		 * on nRF9160 DK. Instead, we have 2 buttons and 2 switches.
    		 * Treat the switches as buttons anyway, for convenience.
    		 * This makes life easier for software that wants to deal with
    		 * the usual "4 buttons per DK board" convention.
    		 */
    		compatible = "gpio-keys";
    		button0: button_0 {
    			gpios = <&gpio0 6 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Push button 1";
    		};
    		button1: button_1 {
    			gpios = <&gpio0 7 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Push button 2";
    		};
    		button2: button_2 {
    			gpios = <&gpio0 8 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Switch 1";
    		};
    		button3: button_3 {
    			gpios = <&gpio0 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Switch 2";
    		};
    	};
    
    	interface_to_nrf52840: gpio-interface {
    		compatible = "nordic,nrf9160dk-nrf52840-interface";
    		#gpio-cells = <2>;
    		gpio-map-mask = <0xf 0>;
    		gpio-map-pass-thru = <0 0xffffffff>;
    		gpio-map = <0 0 &gpio0 17 0>,
    			   <1 0 &gpio0 18 0>,
    			   <2 0 &gpio0 19 0>,
    			   <3 0 &gpio0 21 0>,
    			   <4 0 &gpio0 22 0>,
    			   <5 0 &gpio0 23 0>;
    			   /* 6: COEX0 */
    			   /* 7: COEX1 */
    			   /* 8: COEX2 */
    	};
    
    	nrf52840_reset: gpio-reset {
    		compatible = "nordic,nrf9160dk-nrf52840-reset";
    		status = "disabled";
    		/*
    		 * This line is specified as active high for compatibility
    		 * with the previously used Kconfig-based configuration.
    		 */
    		gpios = <&interface_to_nrf52840 5 GPIO_ACTIVE_HIGH>;
    	};
    
    	arduino_header: connector {
    		compatible = "arduino-header-r3";
    		#gpio-cells = <2>;
    		gpio-map-mask = <0xffffffff 0xffffffc0>;
    		gpio-map-pass-thru = <0 0x3f>;
    		gpio-map = <0 0 &gpio0 14 0>,	/* A0 */
    			   <1 0 &gpio0 15 0>,	/* A1 */
    			   <2 0 &gpio0 16 0>,	/* A2 */
    			   <3 0 &gpio0 17 0>,	/* A3 */
    			   <4 0 &gpio0 18 0>,	/* A4 */
    			   <5 0 &gpio0 19 0>,	/* A5 */
    			   <6 0 &gpio0 0 0>,	/* D0 */
    			   <7 0 &gpio0 1 0>,	/* D1 */
    			   <8 0 &gpio0 2 0>,	/* D2 */
    			   <9 0 &gpio0 3 0>,	/* D3 */
    			   /*<10 0 &gpio0 4 0>,*/   /* D4 */
    			   <11 0 &gpio0 5 0>,	/* D5 */
    			   <12 0 &gpio0 6 0>,	/* D6 */
    			   <13 0 &gpio0 7 0>,	/* D7 */
    			   <14 0 &gpio0 8 0>,	/* D8 */
    			   <15 0 &gpio0 9 0>,	/* D9 */
    			   <16 0 &gpio0 10 0>,	/* D10 */
    			   <17 0 &gpio0 11 0>,	/* D11 */
    			   <18 0 &gpio0 12 0>,	/* D12 */
    			   <19 0 &gpio0 13 0>,	/* D13 */
    			   <20 0 &gpio0 30 0>,	/* D14 */
    			   <21 0 &gpio0 31 0>;	/* D15 */
    	};
    /* Non-Secure image memory */
    	arduino_adc: analog-connector {
    		compatible = "arduino,uno-adc";
    		#io-channel-cells = <1>;
    		io-channel-map = <0 &adc 1>,	/* A0 = P0.14 = AIN1 */
    				 <1 &adc 2>,	/* A1 = P0.15 = AIN2 */
    				 <2 &adc 3>,	/* A2 = P0.16 = AIN3 */
    			   /*<3 &adc 4>,*/	/* A3 = P0.17 = AIN4 */
    				 <4 &adc 5>,	/* A4 = P0.18 = AIN5 */
    				 <5 &adc 6>;	/* A5 = P0.19 = AIN6 */
    	};
    
    	/* These aliases are provided for compatibility with samples */
    	aliases {
    		led0 = &led0;
    		led1 = &led1;
    		led2 = &led2;
    		led3 = &led3;
    		pwm-led0 = &pwm_led0;
    		sw0 = &button0;
    		sw1 = &button1;
    		sw2 = &button2;
    		sw3 = &button3;
    		bootloader-led0 = &led0;
    	};
    };
    
    &adc {
    	status = "okay";
    };
    
    &gpiote {
    	status = "okay";
    };
    
    &gpio0 {
    	status = "okay";
    };
    
    &uart0 {
    	status = "okay";
    	current-speed = <115200>;
    	tx-pin = <29>;
    	rx-pin = <28>;
    	rx-pull-up;
    	rts-pin = <27>;
    	cts-pull-up;
    };
    
    arduino_serial: &uart1 {
    	status = "okay";
    	current-speed = <115200>;
    	tx-pin = <24>;
    	rx-pin = <23>;
    	rx-pull-up;
    	rts-pin = <14>;
    	cts-pin = <15>;
    	cts-pull-up;
    };
    
    &uart2 {
    	tx-pin = <24>;
    	rx-pin = <23>;
    };
    
    arduino_i2c: &i2c2 {
    	compatible = "nordic,nrf-twim";
    	status = "okay";
    	sda-pin = <30>;
    	scl-pin = <31>;
    };
    
    &pwm0 {
    	status = "okay";
    	ch0-pin = <12>;
    };
    
    &spi3 {
        status = "okay";
        compatible = "nordic,nrf-spim";
        sck-pin = <31>;
        mosi-pin = <9>;
        miso-pin = <30>;
    /* 	cs-gpios = <&gpio0 26 0>,<&gpio0 15 1>;
       cs-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>,
    	           <&gpio0 15 GPIO_ACTIVE_LOW>;  */
    };
    
    &spi1 {
    	compatible = "nordic,nrf-spim";
    	clock-frequency = <0x80000000>;
    	status = "okay";
        sck-pin = <3>;
        mosi-pin = <8>;
        miso-pin = <5>;
        cs-gpios = <&gpio0 4 0>;  
    /*    cs-gpios = <&gpio0 4 1>;  */
    };
    
    &gpiote {   
    status = "okay";
       interrupts = <49 0>;
       interrupts = <49 0>;
    };
    
    &i2c2 {
    	compatible = "nordic,nrf-twim";
    	status = "okay";
    	sda-pin = <11>;
    	scl-pin = <10>;
    };
    
    &gpiote {   
    status = "okay";
       interrupts = <49 0>;
    };
    
    &timer0 {
    	status = "okay";
    };
    
    &timer1 {
    	status = "okay";
    };
    
    &timer2 {
    	status = "okay";
    };
    
    &flash0 {
    
    	partitions {
    		compatible = "fixed-partitions";
    		#address-cells = <1>;
    		#size-cells = <1>;
    
    		boot_partition: partition@0 {
    			label = "mcuboot";
    			reg = <0x00000000 0x10000>;
    		};
    		slot0_partition: partition@10000 {
    			label = "image-0";
    		};
    		slot0_ns_partition: partition@50000 {
    			label = "image-0-nonsecure";
    		};
    		slot1_partition: partition@80000 {
    			label = "image-1";
    		};
    		slot1_ns_partition: partition@c0000 {
    			label = "image-1-nonsecure";
    		};
    		scratch_partition: partition@f0000 {
    			label = "image-scratch";
    			reg = <0x000f0000 0xa000>;
    		};
    		storage_partition: partition@fa000 {
    			label = "storage";
    			reg = <0x000fa000 0x00006000>;
    		};
    	};
    };
    
    / {
    
    	reserved-memory {
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges;
    
    		sram0_s: image_s@20000000 {
    			/* Secure image memory */
    		};
    
    		sram0_modem: image_modem@20016000 {
    			/* Modem (shared) memory */
    		};
    
    		sram0_ns: image_ns@20020000 {
    			/* Non-Secure image memory */
    		};
    	};
    };
    
    /* Include partition configuration file */
    #include "etrog_nrf9160_partition_conf.dts"
    

Reply
  • /*
     * Copyright (c) 2018-2020 Nordic Semiconductor ASA
     *
     * SPDX-License-Identifier: Apache-2.0
     */
    
    / {
    	model = "Nordic nRF9160 DK NRF9160";
    	compatible = "nordic,nrf9160-dk-nrf9160";
    
    	chosen {
    		zephyr,console = &uart0;
    		zephyr,shell-uart = &uart0;
    		zephyr,uart-mcumgr = &uart0;
    	};
    	
    	leds {
    		compatible = "gpio-leds";
    		led0: led_0 {
    			gpios = <&gpio0 2 0>;
    			label = "Green LED 1";
    		};
    		led1: led_1 {
    			gpios = <&gpio0 3 0>;
    			label = "Green LED 2";
    		};
    		led2: led_2 {
    			gpios = <&gpio0 2 0>;
    			label = "Green LED 3";
    		};
    		led3: led_3 {
    			gpios = <&gpio0 5 0>;
    			label = "Green LED 4";
    		};
    	};
    
    	pwmleds {
    		compatible = "pwm-leds";
    		pwm_led0: pwm_led_0 {
    			pwms = <&pwm0 12>;
    		};
    	};
    
    	buttons {
    		/*
    		 * Unlike most DK boards, we do not actually have 4 buttons
    		 * on nRF9160 DK. Instead, we have 2 buttons and 2 switches.
    		 * Treat the switches as buttons anyway, for convenience.
    		 * This makes life easier for software that wants to deal with
    		 * the usual "4 buttons per DK board" convention.
    		 */
    		compatible = "gpio-keys";
    		button0: button_0 {
    			gpios = <&gpio0 6 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Push button 1";
    		};
    		button1: button_1 {
    			gpios = <&gpio0 7 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Push button 2";
    		};
    		button2: button_2 {
    			gpios = <&gpio0 8 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Switch 1";
    		};
    		button3: button_3 {
    			gpios = <&gpio0 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Switch 2";
    		};
    	};
    
    	interface_to_nrf52840: gpio-interface {
    		compatible = "nordic,nrf9160dk-nrf52840-interface";
    		#gpio-cells = <2>;
    		gpio-map-mask = <0xf 0>;
    		gpio-map-pass-thru = <0 0xffffffff>;
    		gpio-map = <0 0 &gpio0 17 0>,
    			   <1 0 &gpio0 18 0>,
    			   <2 0 &gpio0 19 0>,
    			   <3 0 &gpio0 21 0>,
    			   <4 0 &gpio0 22 0>,
    			   <5 0 &gpio0 23 0>;
    			   /* 6: COEX0 */
    			   /* 7: COEX1 */
    			   /* 8: COEX2 */
    	};
    
    	nrf52840_reset: gpio-reset {
    		compatible = "nordic,nrf9160dk-nrf52840-reset";
    		status = "disabled";
    		/*
    		 * This line is specified as active high for compatibility
    		 * with the previously used Kconfig-based configuration.
    		 */
    		gpios = <&interface_to_nrf52840 5 GPIO_ACTIVE_HIGH>;
    	};
    
    	arduino_header: connector {
    		compatible = "arduino-header-r3";
    		#gpio-cells = <2>;
    		gpio-map-mask = <0xffffffff 0xffffffc0>;
    		gpio-map-pass-thru = <0 0x3f>;
    		gpio-map = <0 0 &gpio0 14 0>,	/* A0 */
    			   <1 0 &gpio0 15 0>,	/* A1 */
    			   <2 0 &gpio0 16 0>,	/* A2 */
    			   <3 0 &gpio0 17 0>,	/* A3 */
    			   <4 0 &gpio0 18 0>,	/* A4 */
    			   <5 0 &gpio0 19 0>,	/* A5 */
    			   <6 0 &gpio0 0 0>,	/* D0 */
    			   <7 0 &gpio0 1 0>,	/* D1 */
    			   <8 0 &gpio0 2 0>,	/* D2 */
    			   <9 0 &gpio0 3 0>,	/* D3 */
    			   /*<10 0 &gpio0 4 0>,*/   /* D4 */
    			   <11 0 &gpio0 5 0>,	/* D5 */
    			   <12 0 &gpio0 6 0>,	/* D6 */
    			   <13 0 &gpio0 7 0>,	/* D7 */
    			   <14 0 &gpio0 8 0>,	/* D8 */
    			   <15 0 &gpio0 9 0>,	/* D9 */
    			   <16 0 &gpio0 10 0>,	/* D10 */
    			   <17 0 &gpio0 11 0>,	/* D11 */
    			   <18 0 &gpio0 12 0>,	/* D12 */
    			   <19 0 &gpio0 13 0>,	/* D13 */
    			   <20 0 &gpio0 30 0>,	/* D14 */
    			   <21 0 &gpio0 31 0>;	/* D15 */
    	};
    /* Non-Secure image memory */
    	arduino_adc: analog-connector {
    		compatible = "arduino,uno-adc";
    		#io-channel-cells = <1>;
    		io-channel-map = <0 &adc 1>,	/* A0 = P0.14 = AIN1 */
    				 <1 &adc 2>,	/* A1 = P0.15 = AIN2 */
    				 <2 &adc 3>,	/* A2 = P0.16 = AIN3 */
    			   /*<3 &adc 4>,*/	/* A3 = P0.17 = AIN4 */
    				 <4 &adc 5>,	/* A4 = P0.18 = AIN5 */
    				 <5 &adc 6>;	/* A5 = P0.19 = AIN6 */
    	};
    
    	/* These aliases are provided for compatibility with samples */
    	aliases {
    		led0 = &led0;
    		led1 = &led1;
    		led2 = &led2;
    		led3 = &led3;
    		pwm-led0 = &pwm_led0;
    		sw0 = &button0;
    		sw1 = &button1;
    		sw2 = &button2;
    		sw3 = &button3;
    		bootloader-led0 = &led0;
    	};
    };
    
    &adc {
    	status = "okay";
    };
    
    &gpiote {
    	status = "okay";
    };
    
    &gpio0 {
    	status = "okay";
    };
    
    &uart0 {
    	status = "okay";
    	current-speed = <115200>;
    	tx-pin = <29>;
    	rx-pin = <28>;
    	rx-pull-up;
    	rts-pin = <27>;
    	cts-pull-up;
    };
    
    arduino_serial: &uart1 {
    	status = "okay";
    	current-speed = <115200>;
    	tx-pin = <24>;
    	rx-pin = <23>;
    	rx-pull-up;
    	rts-pin = <14>;
    	cts-pin = <15>;
    	cts-pull-up;
    };
    
    &uart2 {
    	tx-pin = <24>;
    	rx-pin = <23>;
    };
    
    arduino_i2c: &i2c2 {
    	compatible = "nordic,nrf-twim";
    	status = "okay";
    	sda-pin = <30>;
    	scl-pin = <31>;
    };
    
    &pwm0 {
    	status = "okay";
    	ch0-pin = <12>;
    };
    
    &spi3 {
        status = "okay";
        compatible = "nordic,nrf-spim";
        sck-pin = <31>;
        mosi-pin = <9>;
        miso-pin = <30>;
    /* 	cs-gpios = <&gpio0 26 0>,<&gpio0 15 1>;
       cs-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>,
    	           <&gpio0 15 GPIO_ACTIVE_LOW>;  */
    };
    
    &spi1 {
    	compatible = "nordic,nrf-spim";
    	clock-frequency = <0x80000000>;
    	status = "okay";
        sck-pin = <3>;
        mosi-pin = <8>;
        miso-pin = <5>;
        cs-gpios = <&gpio0 4 0>;  
    /*    cs-gpios = <&gpio0 4 1>;  */
    };
    
    &gpiote {   
    status = "okay";
       interrupts = <49 0>;
       interrupts = <49 0>;
    };
    
    &i2c2 {
    	compatible = "nordic,nrf-twim";
    	status = "okay";
    	sda-pin = <11>;
    	scl-pin = <10>;
    };
    
    &gpiote {   
    status = "okay";
       interrupts = <49 0>;
    };
    
    &timer0 {
    	status = "okay";
    };
    
    &timer1 {
    	status = "okay";
    };
    
    &timer2 {
    	status = "okay";
    };
    
    &flash0 {
    
    	partitions {
    		compatible = "fixed-partitions";
    		#address-cells = <1>;
    		#size-cells = <1>;
    
    		boot_partition: partition@0 {
    			label = "mcuboot";
    			reg = <0x00000000 0x10000>;
    		};
    		slot0_partition: partition@10000 {
    			label = "image-0";
    		};
    		slot0_ns_partition: partition@50000 {
    			label = "image-0-nonsecure";
    		};
    		slot1_partition: partition@80000 {
    			label = "image-1";
    		};
    		slot1_ns_partition: partition@c0000 {
    			label = "image-1-nonsecure";
    		};
    		scratch_partition: partition@f0000 {
    			label = "image-scratch";
    			reg = <0x000f0000 0xa000>;
    		};
    		storage_partition: partition@fa000 {
    			label = "storage";
    			reg = <0x000fa000 0x00006000>;
    		};
    	};
    };
    
    / {
    
    	reserved-memory {
    		#address-cells = <1>;
    		#size-cells = <1>;
    		ranges;
    
    		sram0_s: image_s@20000000 {
    			/* Secure image memory */
    		};
    
    		sram0_modem: image_modem@20016000 {
    			/* Modem (shared) memory */
    		};
    
    		sram0_ns: image_ns@20020000 {
    			/* Non-Secure image memory */
    		};
    	};
    };
    
    /* Include partition configuration file */
    #include "etrog_nrf9160_partition_conf.dts"
    

Children
No Data
Related