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
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.
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
> 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.
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
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.
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.
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
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
> '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.
@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