Fügen Sie mehr als 2 SPI-Slaves hinzu

12

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?

SPI-Sklaven

Sergei Basharov
quelle
"Ist es möglich, es so zu machen?" -> Scheint mir das genau so zu sein, außer das der Pi CE0 und CE1 anstelle von SS1, SS2, SS3 hat. Die SCLK-, MOSI- und MISO-Busleitungen werden in beiden Fällen von allen Geräten gemeinsam genutzt.
Goldlöckchen

Antworten:

12

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.

joan
quelle
1
"Erlaube beliebige gpios" ist eine gute Idee für sich und was man von einem eingebetteten System erwarten kann. Danke für die Eingabe.
Ghanima
Joan, bitte erklären Sie, wie Sie "ein anderes SPI-Gerät mit 3 Chip-Selects" mit "pigpio" -Bibliothek verwenden oder auf ein Codebeispiel verlinken. Dies hilft bei der Beantwortung der Frage. Vielen Dank
Alex
Siehe abyz.co.uk/rpi/pigpio/cif.html#spiOpen . GPIO 16-21 sind mit dem AUX-SPI verbunden. Siehe abyz.co.uk/rpi/pigpio/index.html#Type_3 . Alternativ soll der jetzt aktuelle Linux-SPI-Treiber (spi_bcm2853) beliebige GPIOs bei der Chipauswahl unterstützen. Siehe / boot / oversays / README.
Joan
"Die Pis mit dem 40-Pin-Erweiterungs-Header haben ein anderes SPI-Gerät mit 3 Chip-Selects", es gibt nur 2 cs auf dem 40-Pin-Header
1
@meh Auf dem 40-poligen Erweiterungs-Header befinden sich 5 Chip-Selects. Zwei für das Haupt-SPI und drei für das Zusatz-SPI. Die zusätzlichen SPI-Signale werden in Kleinbuchstaben unter abyz.co.uk/rpi/pigpio/index.html#Type_3
joan
3

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.

Ghanima
quelle
1

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.

Alexander
quelle