Forum: Mikrocontroller und Digitale Elektronik SPI kaskadieren


von dreg (Gast)


Lesenswert?

Hallo,

wie soll das kaskadieren bei SPI funktionieren?
Wie ich festgestellt habe, wird wohl immer so etwas wie es unter 
WIKIPEDIA SPI-kaskadieren Bild 1 dargestellt ist, verbreitet.
Aber wie soll das funktionieren?
Der erste Slave wird doch auf das Datenwort, das für den letzetn Slave 
gedacht ist, reagieren.
Wer hat so etwas schon mal erfolgreich eingesetzt?

Gruss
dreg

von Bensch (Gast)


Lesenswert?

--> Datenblatt z.B. vom 74HC595

von H.Joachim S. (crazyhorse)


Lesenswert?

Bild 1 sehe ich nicht..., aber ich habs gefunden.

Es werden immer komplett 24 Bit geschoben, erst mit SS lösen die Daten 
dann Aktionen aus.
Aus diesem Grund sind einfache Schieberegister ohne extra 
Ausgangsregister schlechter geeignet. Hängen da z.B. LEDs dran, stört es 
kaum, wenn amn ausreichend schnell schiebt.
Schau dir mal den 4094 an, da ist das gut erklärt.

von dreg (Gast)


Lesenswert?

Hallo

>>H.joachim
beim 4094 ist das klar. Da gibt es ja auch ein strobe und ich kann die 
Übernahme (aus dem Schieberegister) selektieren.
Bei SPI gibt es kein strobe. Alle CS und CL sind zusammen und die 
Bausteine reagieren auf die Datenstruktur.

gruss
dreg

von Falk B. (falk)


Lesenswert?


von Bensch (Gast)


Lesenswert?

> Da gibt es ja auch ein strobe und ich kann die
Übernahme (aus dem Schieberegister) selektieren.
Bei SPI gibt es kein strobe.

Dann mach dir eins.

von Kobaltchlorid (Gast)


Lesenswert?

> Bei SPI gibt es kein strobe.

Aber es gibt normalerweise bei jedem Slave einen SlaveSelect-Eingang. 
Niemand hindert dich daran, mehrere SS-Ausgänge vom Master zu mehreren 
Slaves zu schalten. Du brauchst halt pro Slave eine zusätzliche 
Steuerleitung, die man aber auch multiplexen kann.

Für 8 Slaves reichen also MOSI, MISO, CLK und drei Portpins als 
Adressausgänge für einen Multiplexer. Solange die SS-Leitung am Slave 
High ist, ist dem Slave MOSI und CLK völlig egal.

von dreg (Gast)


Lesenswert?

Hallo

>> Danke Falk
Aber es geht nicht um das Verständniss Schieberegister, sondern um SPI.

>> Danke Bensch
SPI mit selektiver Ansteuerung (Strobe oder CS oder sonst was) ist SPI 
mit Sternförmiger Ansteuerung.
Die Frage ist aber 'wie funktioniert das Kaskadieren bei SPI?'.

Gruss
dreg

von Karl H. (kbuchegg)


Lesenswert?

dreg wrote:
> Die Frage ist aber 'wie funktioniert das Kaskadieren bei SPI?'.


* Indem alle SPI Slaves am selben 'Bus' hängen
* Indem jede Stufe aus einem 'SPI-Eingang' und einem 'SPI-Ausgang' 
besteht

Alles andere muss dann über ein Protokoll geregelt werden. Jede SPI 
Stufe hat eine software-mässige Adresse, und in den gesendeten Daten ist 
in irgendeiner Form enthalten an wen die Daten gerichtet sind.

Ist im Grunde auch nichts anderes als bei einem Stille-Post Spiel: Wenn 
du an einem bestimmten Teilnehmer etwas mitteilen willst, dann sagst du 
dem ersten: 'Sag Hans, das ich möchte, dass ....'
'Sag Hans' ist die Adressierung des Teilnehmers und wird so vom ersten 
Teilnehmer zum jeweils nächsten weitergegeben. Alle ignorieren die 
restlichen Daten, nur Hans kümmert sich darum.

von H.Joachim S. (crazyhorse)


Lesenswert?

naja, das wüde dann schon wieder eine gewisse "Intelligenz" beim slave 
erfordern, MAX7219 z.B.

Bei Schieberegistern gibts keine Adressen und kein Protokoll - die 
Adresse ist einfach die physikalische Position innerhalb der Kette - 
sowohl auf Byte- als auch auf Bitebene.
Und es geht natürlich auch ohne strobe, dann erscheinen eben kurzzeitig 
falsche Informationen an den Ausgängen. Kann oft toleriert werden.
Es wird einfach komplett neu geschrieben.

von Karl H. (kbuchegg)


Lesenswert?

Worüber reden wir hier eigentlich?
Über Schieberegister oder über SPI im Allgemeinen?

von Peter D. (peda)


Lesenswert?

dreg wrote:
> Hallo
>
>>>H.joachim
> beim 4094 ist das klar. Da gibt es ja auch ein strobe und ich kann die
> Übernahme (aus dem Schieberegister) selektieren.
> Bei SPI gibt es kein strobe. Alle CS und CL sind zusammen und die
> Bausteine reagieren auf die Datenstruktur.

Kommt drauf an, der SPI-IC muß fürs Kaskadieren geeignet sein, d.h. alle 
Daten durchschieben, dann kannst Du beliebig viele hintereinander 
schalten.
Alle übernehmen dann die Daten mit der gemeinsamen 0-1-Flanke des 
/CS-Signals.
Das geht mit SRGs (74HC595, 74HC165), dem LED-Treiber MAX7219, DACs usw.

Mit ADCs geht das in der Regel nicht, da sie die Konfiguration einlesen 
und gleichzeitig den ADC-Wert ausgeben. Diese muß man einzeln 
selektieren.


Peter

von dreg (Gast)


Lesenswert?

Hallo,

also was ich bis jetzt mitgenommen habe ist, 'kaskadieren von Slaves bei 
SPI' funktioniert nicht, ausser man kann eine (temporäre) Fehlfunktion 
der vorderen Slaves hinnehmen.

Das können ja nur dumme Ausgabebausteine sein wenn in deren 
Reaktionszeit sichergestellt ist, dass die Datenübertragung 
abgeschlossen ist.
z.B. Anzeige-Treiber -> das menschliche Auge ist zu Träge
oder Relais-Treiber -> die Anzugszeit ist wesentlich grösser.

Ich konnte mir überhaupt nicht vorstellen, wie man z.b. serielle EEPROMs 
kaskadieren könnte um z.b. die Wortbreite zu vergrössern. Dies wurde mal 
irgendwo als Beispiel für eine Kaskadierung genannt.

Danke und Gruss
dreg

von Bensch (Gast)


Lesenswert?

> 'kaskadieren von Slaves bei
SPI' funktioniert nicht, ausser man kann eine (temporäre) Fehlfunktion
der vorderen Slaves hinnehmen.

Glaub mir, es funktioniert richtig und zuverlässig.
Und es wurde auch schon mehrfach hier geschrieben, wie.

von Falk B. (falk)


Lesenswert?

@dreg (Gast)

>also was ich bis jetzt mitgenommen habe ist, 'kaskadieren von Slaves bei
>SPI' funktioniert nicht,

Richtig.

> ausser man kann eine (temporäre) Fehlfunktion
>der vorderen Slaves hinnehmen.

Nöö, die meisten ICs sind schlicht dafür nicht einsetzbar, auch mit 
Störungen. Einfache Schieberegister sind da die Ausnahme.

>Das können ja nur dumme Ausgabebausteine sein wenn in deren
>Reaktionszeit sichergestellt ist, dass die Datenübertragung
>abgeschlossen ist.

???

>z.B. Anzeige-Treiber -> das menschliche Auge ist zu Träge
>oder Relais-Treiber -> die Anzugszeit ist wesentlich grösser.

Unsinn. Auch die dummen Schieberegister ala 74HC595 haben ZWEI Register. 
Nämlich das Schieberegister an sich und ein Ausgangsregister. Da kommt 
es niemals zu undefinierten Zuwischenzuständen. Siehe Artikel.

Ganz einfache Schieberegister OHNE Ausgangsregister ala 74HC164 kann man 
logischerweise für sowas nicht nutzen.

>Ich konnte mir überhaupt nicht vorstellen, wie man z.b. serielle EEPROMs
>kaskadieren könnte um z.b. die Wortbreite zu vergrössern.

Das macht auch keiner. Sowas macht man rein in Software duch 
etnsprechende Datenverarbeitung. Wortbreiten vergrössern macht man nur 
bei RAMs etc. mit paralleler Schnittstelle.

> Dies wurde mal irgendwo als Beispiel für eine Kaskadierung genannt.

Dann war das Beispiel falsch.

MFG
Falk

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.