Forum: Mikrocontroller und Digitale Elektronik SPI - Geschwindigkeit


von filzlaus (Gast)


Lesenswert?

Hallo!

Habe gestern mal zusammen mit einem Freund die Datenübertragung per SPI
zwischen zwei ATmega16 ausprobiert. Dazu haben wir zwei STK500
zusammengeschalten mit kurzen Leitungen dazwischen (10cm, ungeschirmt,
verdrillt). Beide Controller waren auf 3,69MHz eingestellt. Die
Übertragenen Zeichen haben wir auf ein Display ausgegeben. Bei
Einstellung der Master-Clock-Rate auf  fosc/16 klappte die Übertragung
nicht einwandfrei. Es wurden immer wieder Zeichen verschluckt. Erst bei
einem Teiler von  fosc/64 klappte die Übertragung einwandfrei.
Ich hab jetzt schon länger im www gesucht, aber keine Werte gefunden,
wie hoch die maximale Bitrate ungefähr sein darf. Kann mir dazu jemand
Erfahrungswerte geben?? In unserem Fall wäre sie ja nur 3,69MHz/64,
macht ungefähr 57 Kbit/s. Oder hab ich nen Denkfehler??

Gruß

fizlaus

von Peter D. (peda)


Lesenswert?

Was ist denn das für ein Display ?

Warscheinlich ist es zu lahm und Du benutzt keinen Empfangspuffer für
das SPI.

Du must einen Empfangspuffer für die maximale Bytezahl anlegen, der
dann im SPI-Interrupt vollgepumpt wird.


Und SPI-Slave-Transmitter geht ganz ganz schlecht, da kein Sendepuffer,
d.h. Datenverluste sind quasi vorprogrammiert, wenn nicht elendlange
Wartezeiten zwischen den Bytes eingelegt werden oder ein Handshake
gemacht wird.


I2C ist da wesentlich sicherer, da der Slave den Master einfach warten
lassen kann, bis er fertig ist (SCL-Stretching).


Peter

von filzlaus (Gast)


Lesenswert?

Hallo Peter,

danke für Deinen Beitrag. An den Puffer haben wir nicht gedacht. Genau
das war das Problem.

von Hartmut Gröger (Gast)


Lesenswert?

Hi

Normalerweise kann der SPI-Takt f/2 beim Master und f/4 beim Slave
betragen. Ich denke deine Datenverluste liegen nicht bei der
Übertragung sondern in der Weiterverarbeitung der empfangenen Daten.
ansonsten ,siehe oben.

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.