mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI - Geschwindigkeit


Autor: filzlaus (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: filzlaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

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

Autor: Hartmut Gröger (Gast)
Datum:

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

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.