Forum: Mikrocontroller und Digitale Elektronik CRC bei SPI sinvoll?


von Mathias (Gast)


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

von A.K. (Gast)


Lesenswert?

Was zu MISO reinkommt ist kein Echo von MOSI.

von Mathias (Gast)


Lesenswert?

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

von A.K. (Gast)


Lesenswert?

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

von Peter Dannegger (Gast)


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

von Mathias (Gast)


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

von Peter Dannegger (Gast)


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

von Mathias (Gast)


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

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.