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!
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.
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.
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.
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" ;)
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.