Forum: Mikrocontroller und Digitale Elektronik SPI - Richtig verstanden?


von Chris (Gast)


Lesenswert?

Hallo,

habe ich das Prinzip von SPI so richtig verstanden (wenn z.B ein Atmega 
Master ist):

Wenn der Master ein Byte an den Slave sendet, wird immer gleichzeitig 
auch ein Byte vom Slave in den Master geschoben. Meistens wird aber 
dieses Byte vom Master ignoriert, weil er erst mehrere Bytes senden will 
bevor er eine Antwort erwartet.

Wenn der Master nun ein Byte vom Slave empfangen will ohne ein 
bestimmtes zu senden schickt er das berühmte Dummy-Byte. Dieses Byte 
wird aber nun vom Slave ignoriert.

Ciao
Chris

von antworter (Gast)


Lesenswert?

Da bekommt man ja Kopfschmerzen...

(1) SPI ist eine FullDuplex Schnittstelle (also gleichzeitig Senden und 
Empfangen) mit dediziertem MasterClock.

(2) SPI ist eine synchrone serielle Schnittstelle (also mit 
Clock-Signal).

(3) Puffer gibt es bei manchen Implementationen (keine Pflicht).




Also sag einfach: Die SPI ist eine voll-duplex-fähige synchrone serielle 
Schnittestelle mit Buffer-Support und dediziertem MasterClock.

Das schließt dann Deine obige "Geschichte" mit ein und noch viele andere 
Szenarien...

von Null (Gast)


Lesenswert?

Chris,
deine Ansicht kommt etwa hin, ist aber ein Spezialfall. Man kann als 
Slave auch ein Schieberegister, zB ein 75HC595 haben., oder ein 597.

von Chris (Gast)


Lesenswert?

Danke für die Antwort Null!

Ich versuche zu verstehen warum man ein Dummy-Byte an den Slave sendet, 
wenn man doch ein Byte vom Slave empfangen will. Ich verstehe, dass das 
notwendig ist um den Slave mit einem Takt zu versorgen.

Das würde aber doch auch bedeuten, dass der Slave immer auch ein Byte 
sendet wenn er eins empfängt...

Ciao
Chris




von Michael U. (Gast)


Lesenswert?

Hallo,

richtig. Das Ganze sind 2 8Bit-Schieberigister, die zu einem Ring 
zusammengeschaltet sind. Mit jedem Master-Clock wird der Kram um 1Bit im 
Kreis geschoben. Nach 8 Takten ist der Inhalt vom Master im Slave und 
der vom Slave im Master. Ob und wie die jeweiligen Inhalte dann 
interpretiert werden, hängt ja vom Programm in Master und Slave ab.
Wenn ich Daten vom Master zum Slave sende, interessiert mich 
normalerweise nicht, was dabei vom Slave kommt, wenn ich Daten vom Slave 
bestellt habe, interessiert der sich nicht für das dabei empfangene 
Byte.

Prinzipiell kann ich so natürlich auch gleichzeitig dem Slave ein Byte 
senden und ein Byte vom Slave empfangen, nur muß es die Software in 
beiden dann auch so handhaben können...

Gruß aus Berlin
Michael

von Falk (Gast)


Lesenswert?

@ Chris

>Ich versuche zu verstehen warum man ein Dummy-Byte an den Slave sendet,

Das braucht der AVR-Mster, umd die SPI-Übertragung zu starten.

Mfg
Falk

von Chris (Gast)


Lesenswert?

Vielen Dank für die beiden letzten Antworten! Insbesondere an Michael. 
:-)

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.