Raspberry PI SPI: Mehr als 2 chipselects?

Gast #6101197
Lesenswert?
• ▲
▼
Hallo,

der Raspberry PI hat standardmäßig eine SPI Schnittstelle mit 2 
chipselects. Laut diesem Beitrag ist es möglich per device tree möglich 
weitere chipselects hinzuzufügen, die dann als eigenes devce unter 
/dev/spidev0.x auftauchen:

https://www.raspberrypi.org/forums/viewtopic.php?t=98318&start=25#p821666

Ich habe es nach genau diesem Vorgehen, also
- DTS kompilieren
- dtbo nach /boot/overlays schieben
- overlay in /boot/config.txt aktiveren
geschafft dass die weiteren SPI devices auftauchen, nun also insgesamt 4 
Stück. Bei Testen der einzelnen Schnittstellen ist mir aufgefallen dass 
bei den ersten beiden ursprünglichen devices (spidev0.0 und spidev0.1) 
nur jeweils in paar Impulse aus SCK kommen und die entsprechende CS 
Leitung nicht gesetzt wird. Die beiden neuen devices funktionieren 
dagegen wunderbar. Entfernt man den Overlay wieder, funktioneren die 
beiden alten CS auch wunderbar.
Hat das jemand mit weiteren CS Leitungen hinbekommen?
Hier ist noch der Quellcode des Overlays:
1
/dts-v1/;
2
/plugin/;
3

4
/ {
5
   compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
6

7
   fragment@0 {
8
      target = <&spi0>;
9
      frag0: __overlay__ {
10
         #address-cells = <1>;
11
         #size-cells = <0>;
12
         pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
13
         status = "okay";
14
         cs-gpios = <0>, <0>, <&gpio 25 1>, <&gpio 24 1>;
15

16
         spidev@2{
17
            compatible = "spidev";
18
            reg = <2>;   /* CE2 */
19
            #address-cells = <1>;
20
            #size-cells = <0>;
21
            spi-max-frequency = <500000>;
22
         };
23

24
         spidev@3{
25
            compatible = "spidev";
26
            reg = <3>;   /* CE3 */
27
            #address-cells = <1>;
28
            #size-cells = <0>;
29
            spi-max-frequency = <500000>;
30
         };
31
      };
32
   };
33

34
   fragment@1 {
35
      target = <&gpio>;
36
      __overlay__ {
37
            spi0_cs_pins: spi0_cs_pins {
38
            brcm,pins = <25 24>;  /* reserve default spi cs pins */
39
            brcm,function = <1>; /* out out out out out */
40
         };
41
      };
42
   };
43
};

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.