mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CRC bei SPI sinvoll?


Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich bin gerade dabei ein uC Netzwerk (ein Master, 6 Slaves) über
SPI fertigzustellen. Die Slaves werden dabei parallel angeschlossen (
je eine /CS Leitung für jeden Slave ).

Bin gerade dabei mir zu überlegen, ob es denn sinvoll ist eine Art CRC
einzubauen. Bei SPI werden ja während einer Datenübertragung das
Sendereg. des Masters mit dem Empfangsreg. des Slaves ausgetauscht.
Wenn ich also nach einer vollständigen Übertragung das Sendereg. des
Masters mit dem gesendeten Byte vergleiche, dann dürfte doch bei
Übereinstimmung kein Fehler aufgetreten sein oder?

Mfg, Mathias

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was zu MISO reinkommt ist kein Echo von MOSI.

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm dann ist es aber dass was zuvor gesendet wurde oder? bzw. das was
eben im datenreg. drinn steht

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was beim Senden reinkommt ist das, was davor beim Slave im
Transfer-Register stand. Was das ist, hängt von dessen Programm ab.

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du brauchst ne Ready-Leitung (kann ja als open drain für alle Slaves die
gleiche sein), z.B.:

http://www.mikrocontroller.net/forum/read-1-249737.html#new

Oder elend lange Wartezeiten.
Anders gehts nicht !!!


CRC ist nicht dazu da, um Softwarefehler auszubügeln, sondern um
Störungen (EMV) zu erkennen.


Peter

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zu was eine ready leitung? wenn ich mir mit einem höher prioren
interrupt im slave jedes mal das empf. byte abhole, dann ist wohl
sichergestellt das kein byte überschrieben wird. und außerdem gibt es
ja das wcol bit

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei Nichtnennen des MC-Typs wird hier immer der AVR angenommen und der
hat gar keine Prioritäten.

Wenn Du aber die höchste Priortiät bei den Slaves verwenden kannst,
dann muß die Wartezeit nur so groß sein, wie lange der Interrupthandler
braucht, um das nächste Sendebyte reinzustellen. Aber ganz ohne
Wartezeit geht es nicht.

Es sein denn Dein unbekanntwer MC ist z.B. ein AT89LP4052 mit
gepuffertem SPI (enhanched mode).


Peter

Autor: Mathias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sry @ peter handelt sich um einen LPC931

da das versenden beim master in einer main loop passiert (bei jedem
durchlauf wird ein byte versendet).. ist die wartezeit auf alle fälle
sichergestellt ( min. um den faktor 100 laenger als die zeit die der
interrupthandler benoetigt )

Mathias

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.