Forum: Mikrocontroller und Digitale Elektronik Verständnisfragen: Verbindungsablauf SPI


von Peter Reither (Gast)


Lesenswert?

Hi!

Ich habe ein paar Fragen zum Verbindungsablauf bei SPI.

Beispiel: Der Master schickt den Befehl 0x51 an den Slave. Dieser soll 
nun mit den zwei Bytes 0xAA 0xAB antworten.

1) Damit der Master mit dem Slave kommunizieren kann, legt er die CS 
Leitung auf high. Ab diesem Moment beginnt der Slave damit Daten zu 
empfangen, oder? Es gibt keine weiter "Startsequenz", oder?

2) Wann beginnt der Master damit auf eine Antwort vom Slave zu warten? 
Geht er davon aus, dass der Slave direkt dann anfängt zu senden, wenn 
der Master das letzte Bit übertragen hat?

3) Wenn der Slave wie im Beispiel angegeben mit zwei Bytes antworten 
soll, kann er dies direkt machen, oder sieht die Kommunikation einen 
byteweisen Austausch (1 Byte Master, 1 Byte Slave) vor?

4) Wenn der Slave eine Art Tastatur ist, also zyklisch seinen Status an 
den Master melden soll (während CS aktiv ist), muss dann die Antwort 
immer auf eine Sequenz vom Master erfolgen, oder kann der Slave auch 
"eigenständig" Daten senden, während CS aktiv ist? Falls ja: Wie 
signalisiert er, dass er beginnen möchte?

5) Was sagen eure Erfahrungswerte, was für Übertragungsraten bzw. CLK 
Frequenzen sind möglich, wenn sowohl Master als auch Slave ATmega8 sind, 
die mit 8MHz getaktet sind?


Vielen Dank im Voraus!

von Eumel (Gast)


Lesenswert?

Peter Reither schrieb:
> 2) Wann beginnt der Master damit auf eine Antwort vom Slave zu warten?
> Geht er davon aus, dass der Slave direkt dann anfängt zu senden, wenn
> der Master das letzte Bit übertragen hat?

Der Slave kann nicht antworten, der Master Taktet die Daten aus ihm 
raus. Du musst dir nochmal genauer anschauen wie SPI funktioniert. 
Eigentlich sind es nur zwei Schieberegister die hintereinander hängen.

Peter Reither schrieb:
> 5) Was sagen eure Erfahrungswerte, was für Übertragungsraten bzw. CLK
> Frequenzen sind möglich, wenn sowohl Master als auch Slave ATmega8 sind,
> die mit 8MHz getaktet sind?

Kommt ganz darauf an was die noch so machen müssen.
Wieso nimmst du eigentlich so einen uralt Controller.

von Bernhard S. (b_spitzer)


Lesenswert?

1) die erste Taktflanke des Masters ist die "Startsequenz"
2) Wie lange ein Slave nach einer möglichen Adresserierung braucht steht 
im Datenblatt. Der Master bestimmt die Übertragung, indem er dann z.B. 8 
0en sendet.
3) Dann kann man 16 Takte am Stück ausgeben und 16 Bit in einem Rutsch 
übertragen. Bei Hardware-SPI ist die Wortbreite aber festgelegt, so dass 
man dann halt 2 Übertragungen direkt nacheinander macht.
4) Slave sendet immer nur auf Anforderung (Takt vom Master). Wenn er 
sich melden soll => Interrupt-Eingang benutzen.
5) nicht mein Controller, daher keine Verlässliche Aussage. CLK/4 oder 
CLK/8 sollten als SPI-Takt gehen. Damit sind ohne Pausen und sonstigem 
Overhead maximal 2 bzw. 1MBit/s möglich.

von hanfsamen (Gast)


Lesenswert?

Peter Reither schrieb:
> Hi!
>
> Ich habe ein paar Fragen zum Verbindungsablauf bei SPI.
>
> Beispiel: Der Master schickt den Befehl 0x51 an den Slave. Dieser soll
> nun mit den zwei Bytes 0xAA 0xAB antworten.
>
> 1) Damit der Master mit dem Slave kommunizieren kann, legt er die CS
> Leitung auf high. Ab diesem Moment beginnt der Slave damit Daten zu
> empfangen, oder? Es gibt keine weiter "Startsequenz", oder?

CS ist active low.
Master liest das, was der Slave ZUVOR in sein Schieberegister bzw sein
SPI-Ausgangsdatenreg
geschrieben hat. Slave ist komplett passiv.

Man muss CS nicht unbedingt pro Byte/Wort/wasauchimmer toggeln,
sondern kann es die "ganze Zeit" aktiv halten.

>
> 2) Wann beginnt der Master damit auf eine Antwort vom Slave zu warten?
> Geht er davon aus, dass der Slave direkt dann anfängt zu senden, wenn
> der Master das letzte Bit übertragen hat?
>
> 3) Wenn der Slave wie im Beispiel angegeben mit zwei Bytes antworten
> soll, kann er dies direkt machen, oder sieht die Kommunikation einen
> byteweisen Austausch (1 Byte Master, 1 Byte Slave) vor?
>

Der Master liest genauso viele bits, wie er geschrieben hat.
Wenn er nur lesen will, muss er idR Dummy-Bits rausschreiben.
Es gibt aber auch "Einweg"-SPIs.
Alles weitere ist Sache eines Protokolls, das Du dir ausdenken darfst.

> 4) Wenn der Slave eine Art Tastatur ist, also zyklisch seinen Status an
> den Master melden soll (während CS aktiv ist), muss dann die Antwort
> immer auf eine Sequenz vom Master erfolgen, oder kann der Slave auch
> "eigenständig" Daten senden, während CS aktiv ist? Falls ja: Wie
> signalisiert er, dass er beginnen möchte?
>

>Eigentlich sind es nur zwei Schieberegister die hintereinander hängen.

Schiebereg: Ja.
hintereinander: Normalerweise nicht.
Takt ist gemeinsam.

von Peter Reither (Gast)


Lesenswert?

Vielen Dank für die ganzen Antworten, jetzt habe ich es verstanden!

Eumel schrieb:
> Wieso nimmst du eigentlich so einen uralt Controller.

Ich habe mal bei ebay einen ganzen Stapel davon ersteigert, und habe 
deshalb so gut wie keine anderen in meiner "Bastelkiste" ;)

von Spess53 (Gast)


Lesenswert?

Hi

>5) Was sagen eure Erfahrungswerte, was für Übertragungsraten bzw. CLK
>Frequenzen sind möglich, wenn sowohl Master als auch Slave ATmega8 sind,
>die mit 8MHz getaktet sind?

Das sagt dir das Datenblatt ganz eindeutig:

• Bit 0 – SPI2X: Double SPI Speed Bit
When this bit is written logic one the SPI speed (SCK Frequency) will be 
doubled when the SPI
is in Master mode (see Table 58). This means that the minimum SCK period 
will be two CPU clock periods.

Ohne SPI2X sind es Fcpu/4.

In SPI Slave mode, the control logic will sample the incoming signal of 
the SCK pin. To ensure
correct sampling of the clock signal, the minimum low and high periods 
should be:
Low periods: longer than 2 CPU clock cycles.
High periods: longer than 2 CPU clock cycles.

MfG Spess

von amateur (Gast)


Lesenswert?

Bei:
> Wieso nimmst du eigentlich so einen uralt Controller.

Gibt es eine ganz einfache Maxime:
Was hast Du?
Und kann der das?

Natürlich gibt es neuere, größere, schneller und kleinere.
U.U. sogar billigere.
Aber das ändert alles nichts an der Grundmaxime.

Und noch was: Bei den "reiferen" Typen kannst Du sicher sein, dass nicht 
Du der Beta-Tester bist. Das kann sehr wichtig werden, wenn man erste 
Gehversuche macht.

von Busbauer (Gast)


Lesenswert?

amateur schrieb:
> Und noch was: Bei den "reiferen" Typen kannst Du sicher sein, dass nicht
> Du der Beta-Tester bist. Das kann sehr wichtig werden, wenn man erste
> Gehversuche macht.

Und bei Älteren, zu denen pinkompatible Nachfolger existieren (mit 
besseren Eigenschaften), die zudem von potentiell nicht 
vertrauenswürdiger Quelle kommen, weißt du nie wie alt die schon sind 
und was die in Ihrem bisherigen Lagerleben schon alles erlebt haben.

Zugegeben alles sehr akademische Probleme für einen Anfänger. Ich habe 
mir damals bei Reichelt 10 STück von ich glaube 5 verschieden 
Prozessoren gekauft.
Tinys in DIP waren ein Fehlkauf, hab ich alle noch, wenn habe ich die in 
SMD verbaut, wenn schon klein dann richtig. Atmega644 in DIP ist das 
womit ich alle meine Steckbrettaufbauten mit betreibe. Später such ich 
über Parameter-Tabelle alle Prozessoren raus die meine verwendeten 
Features unterstützen, und dann bei meinen Händler am günstigsten sind. 
Das sind nicht die, die am wenigsten können, sonder die die am 
häufigsten verkauft werden

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.