Wie ich auf dem Schema sehe, gibt es 2 Kanäle für Slaves - CS0 und CS1. Bedeutet das, dass ich nur 2 Chips anschließen kann, wie MCP3008 oder so? Oder kann ich diesen 2 angeschlossenen Slaves weitere Slaves hinzufügen?
Hat das Himbeer-Schema Unterstützung oder ähnliches mit diesem SPI-Slave-Verbindungsschema aus Wikipedia? Ist es möglich, es so zu machen?
Antworten:
Viele Möglichkeiten.
Sie können eine Art Bit-Bang auswählen, dh alle Geräte mit gemeinsamem MISO / MOSI / SCLK und Masse, aber getrenntem CS verbinden. Stellen Sie einfach CS low für das gewünschte Gerät ein, bevor Sie den SPI-Treiber aufrufen. Der SPI-Treiber versucht, eine CS festzulegen, merkt jedoch nicht, dass keine Verbindung besteht.
Die Pis mit dem 40-Pin-Erweiterungs-Header haben ein weiteres SPI-Gerät mit 3 Chip-Selects. Meine Pigpio- Bibliothek unterstützt dieses Gerät.
Sie können das gesamte Protokoll mit der Software bearbeiten.
Sie können zusätzliche Hardware hinzufügen, um die CS-Leitung auf ein beliebiges Gerät umzuschalten.
Usw.
EDITIERT ZUM HINZUFÜGEN
Der "richtige" Raspberry Pi Linux SPI-Treiber wird derzeit überprüft, damit beliebige GPI-Dateien als CS verwendet werden können.
EDITIERT ZUM HINZUFÜGEN 2
Der aktuelle Linux-SPI-Treiber (spi_bcm2853) soll willkürliches GPIO unterstützen, wenn der Chip ausgewählt wird. Siehe / boot / oversays / README.
quelle
Sie haben Recht, dass der RaspberryPi nur zwei Chip-Selects an seinem SPI-Bus bereitstellt (siehe hier ). Und ich gehe davon aus, dass sich die SPI-Treiber und Softwarelösungen auf diese Tatsache stützen (obwohl die Antwort von @ joan darauf hindeutet, dass verschiedene Bibliotheken unterschiedlich damit umgehen und der offizielle Treiber die Verwendung beliebiger GPIO-Pins für die Chipauswahl in Zukunft zulässt).
Sie müssen jedoch berücksichtigen, dass eine Chipauswahl nichts anderes als ein dedizierter digitaler Ausgang des Pi ist. Daher können Sie immer mehr Chips auswählen, wenn Sie die GPIO-Pins verwenden. In diesem Fall ist Ihre Software jedoch dafür verantwortlich, die entsprechenden Pins für die Adressierung des richtigen SPI-Slaves festzulegen.
Da die gesamte Idee der Chipauswahl darin besteht, nur einen einzigen Slave gegenseitig auszuschließen, können Sie darüber hinaus einige einfache digitale Schaltkreise verwenden, um die Anzahl der "verschwendeten" GPIO-Pins zu verringern (wenn Sie sie auch für andere Zwecke benötigen). So wie beim 74HC / HCT138 könnte ein 3-zu-8-Leitungs-Decoder / Demultiplexer verwendet werden, um 8 Slaves über 8 Chip-Selects mit nur 3 GPIO-Pins zu adressieren.
Zu beachten ist, dass die Buslinien SCLK und MOSI von allen Slaves gemeinsam genutzt werden. Wenn Sie also mehrere Slaves an den Pi anschließen, achten Sie darauf, dass die Auffächerung des Pi durch die Last (Widerstand und Kapazität der Eingangspins der Slaves) nicht überschritten wird - obwohl dies heutzutage mit der geringen Kapazität und weniger problematisch ist Hoher Widerstand der digitalen Eingänge.
quelle
Es gibt tatsächlich eine sehr gute Antwort von einem RPi-Ingenieur, PhilE, im Himbeer-Forum, siehe 28. September 2015 . Grundsätzlich gibt er ein Beispiel für ein Device Tree-Overlay, das die Möglichkeit nutzt, mit spi-bcm2835 beliebige freie GPIOs als Chipauswahl zu haben.
quelle