Kaskadierung mehrerer SPI-Geräte

Ist es möglich, mehrere verschiedene ICs auf derselben Datenleitung zu kaskadieren, um weniger CS-Pins zu verwenden , indem der digitale Ausgang eines jeden mit dem digitalen Eingang des nächsten verbunden wird? Ich bin mit diesem Ansatz auf ähnlichen/gleichen Geräten vertraut, aber ich bin mir nicht sicher, ob es einige zusätzliche Probleme gibt, auf die ich achten sollte.

BEARBEITEN: Bei digitaler Ausgabe pinne ich den Ausgangspin, den viele SPI-Geräte bereitstellen, z. B. MAX395- oder 74HC595-Schieberegister.

Welcher Digitalausgang? SPI hat Data In, Data Out, Clock In und Chip Select In. Was ist dieser digitale Ausgang, von dem Sie sprechen?
@Majenko hat meine Frage bearbeitet

Antworten (2)

Nein, Sie können nicht mit beliebigen SPI-Geräten tun, was Sie denken (wenn Sie denken, was ich denke, dass Sie denken).

Die Geräte, auf die Sie hingewiesen haben, sind keine SPI-Geräte, sondern Schieberegister. Sie funktionieren nicht ganz so wie SPI, aber SPI kann verwendet werden, um sie anzutreiben.

Sie ähneln eigentlich eher JTAG als SPI.

In einem Schieberegister oder JTAG-Gerät wird der Dateneingang (TDI im JTAG-Jargon) in ein einfaches Schieberegister eingespeist, und der letzte Bitausgang des Schieberegisters fällt in den Datenausgang (TDO in JTAG). So funktioniert SPI nicht.

In SPI sind die SDI- und SDO-Pins vollständig getrennt, und die Beziehung zwischen den Daten in einem und den Daten in dem anderen hängt ausschließlich von den Launen des Chips ab. Es ist üblich, eine Befehls- oder Registerstelle in den SDI-Pin einzutakten, und beim nächsten Byte wird der Inhalt dieses Registers aus dem SDO-Pin ausgetaktet.

Also nein, der Eingang "fällt" nicht wie ein Schieberegister in den Ausgang.

Wenn Sie die Anzahl der verwendeten CS-Pins reduzieren möchten, können Sie beispielsweise einen 74HC154 4-zu-16-Decoder verwenden, um 15 Geräte an nur 4 CS-Pins anzuschließen (reservieren Sie 1 Pin für "kein Gerät ausgewählt").

Wenn alle Ihre Geräte Schieberegister sind oder wie Schieberegister arbeiten und keine echten (registerbasierten) SPI-Geräte, können Sie sie möglicherweise kaskadieren, wenn sie alle auf die gleiche Weise funktionieren. Dies ist natürlich nicht garantiert, es sei denn, es handelt sich bei allen um dasselbe Gerät.

Was OP verlangt, ist mit den SPI-ähnlichen Chips möglich, die einen "verketteten" Dateneingang oder -ausgang bieten, wie es bei herkömmlichen Schieberegistern der Fall ist. Aber ich stimme zu, dass die normalen SPI-Chips solche Pins nicht bereitstellen, sodass sie nicht kaskadiert werden können. Beachten Sie, dass Chips wie der MCP23S16 einen I2C-ähnlichen Adressierungsmechanismus bieten, mit dem sie parallel geschaltet werden können .

Es gibt mehrere Geräte (insbesondere ADCs), die einen Datenausgangs-Pin haben, und "Daisy-Chaining" ist gängige Praxis. Wenn Sie also mit 3 Geräten sprechen möchten, müssen Sie die Daten durch das erste und zweite Gerät leiten, um zum dritten zu gelangen. Wenn dies kein Problem verursacht, wird es funktionieren: -

Geben Sie hier die Bildbeschreibung ein

Hoffe, das Diagramm macht Sinn - beachten Sie, dass es eine gemeinsame CS-Leitung gibt, die alle drei Geräte speist. Für verschiedene Geräte müssen sie einen kompatiblen Datenausgang haben, und einige erfordern einen Pull-up für den Datenausgang, aber ich sehe nicht, warum dies nicht erreicht werden kann. Hier ist ein allgemeineres Bild: -

Geben Sie hier die Bildbeschreibung ein

Auf diesem können Sie tatsächlich in den Master zurücklesen, was Sie "ausgegeben" haben - das Schöne daran ist, dass Sie überprüfen können, wie viele Bitübergänge erforderlich sind, um das auf den Slave-Chips verteilte Array von Schieberegistern zu füllen.

Wiki kann auch sehr hilfreich sein

Was Sie dort beschreiben, ist ein JTAG-Bus.
@Majenko - es kann auch als JTAG-Bus bezeichnet werden, aber ADI und Maxim nennen es Daisy-Chaining-SPI-Geräte, ebenso wie Wiki
Daisy Chaining funktioniert mit einigen SPI-Geräten und nicht mit anderen. Es ist wirklich so, wie @Majenko sagt: "Es hängt von der Laune des Chipdesigners ab". Also, Andyaka, Ihre Antwort könnte, obwohl sie für bestimmte Geräte richtig ist, als irreführend für den allgemeinen Fall ausgelegt werden.
@MichaelKaras Beachten Sie, dass ich in meiner Antwort sagte: "Für verschiedene Geräte müssen sie einen kompatiblen Datenausgang haben."