SPI on Orange Pi Zero H2+


Sevc Dominik
 Share

1 1

Recommended Posts

Hi all.

I have problem with SPI on my board .

I find solution but I want to know why .. 

On first :

Linux orangepizero 5.4.20-sunxi #20.02.1 SMP Mon Feb 17 02:09:41 CET 2020 armv7l armv7l armv7l GNU/Linux

If go to armbian-config and enable SpiDev .. then reboot not find SPI device on my dev tree ..

if look to armbianEnv.txt there is spi-spidev but on dev tree no SPI device ..

My solution is this :

on /boot/dtb/overlay is file sun8i-h3-spi-spidev.dtbo , decompile it and there is this text :

/dts-v1/;
/plugin/;

/ {
	compatible = "allwinner,sun8i-h3";

	fragment@0 {
		target-path = "/aliases";
		__overlay__ {
			spi0 = "/soc/spi@01c68000";
			spi1 = "/soc/spi@01c69000";
		};
	};

	fragment@1 {
		target = <&spi0>;
		__overlay__ {
			#address-cells = <1>;
			#size-cells = <0>;
			spidev {
				compatible = "spidev";
				status = "disabled";
				reg = <0>;
				spi-max-frequency = <1000000>;
			};
		};
	};

	fragment@2 {
		target = <&spi1>;
		__overlay__ {
			#address-cells = <1>;
			#size-cells = <0>;
			spidev {
				compatible = "spidev";
				status = "disabled";
				reg = <0>;
				spi-max-frequency = <1000000>;
			};
		};
	};
};

I don't know why  but if change text to this :

/dts-v1/;
// magic:               0xd00dfeed
// totalsize:           0x314 (788)
// off_dt_struct:       0x38
// off_dt_strings:      0x2b4
// off_mem_rsvmap:      0x28
// version:             17
// last_comp_version:   16
// boot_cpuid_phys:     0x0
// size_dt_strings:     0x60
// size_dt_struct:      0x27c

/ {
    compatible = "allwinner,sun8i-h3";
    fragment@0 {
        target-path = "/aliases";
        __overlay__ {
            spi0 = "/soc/spi@1c68000";
            spi1 = "/soc/spi@1c69000";
        };
    };
    fragment@1 {
        target = <0xffffffff>;
        __overlay__ {
            status = "okay";
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            spidev@0 {
                compatible = "spidev";
                reg = <0x00000000>;
                spi-max-frequency = <0x000f4240>;
            };
        };
    };
    fragment@2 {
        target = <0xffffffff>;
        __overlay__ {
            status = "okay";
            #address-cells = <0x00000001>;
            #size-cells = <0x00000000>;
            spidev@0 {
                compatible = "spidev";
                reg = <0x00000000>;
                spi-max-frequency = <0x000f4240>;
            };
        };
    };
    __fixups__ {
        spi0 = "/fragment@1:target:0";
        spi1 = "/fragment@2:target:0";
    };
};

and recompile then all working ..

on my dev tree I see two devices:

crw-rw---- 1 root spidev 153, 0 Mar  8 16:55 /dev/spidev0.0
crw-rw---- 1 root spidev 153, 1 Mar  8 16:55 /dev/spidev1.0
 

 I test it on my Osciloscope and see signal , then I connect MISO wit MOSI and make test with spidev-test and work ..

now I connect real SPI device (any radio nRF24L01 or similar .. and try real test..

 

question is why I must do this ???

what is wrong??

 

best regards..

 

Edited by Sevc Dominik
Link to post
Share on other sites

Armbian is a community driven open source project. Do you like to contribute your code?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

1 1