www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI - Richtig verstanden?


Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: antworter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Null (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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




Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chris (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.