Forum: Mikrocontroller und Digitale Elektronik STM32 SPI CRC hat das einer mal versucht


von Jens (Gast)


Lesenswert?

Hallo,

was haben die sich bei ST dabei gedacht?
Irgendwie werde ich nicht schlau daraus.

Sehe ich das richtig, dass man den CRC nicht nutzen kann und nur dann 
Sinn macht, wenn man große Datenmengen versendet?

Der Master sendet permanent Daten raus und egal ob der Slave nun aktiv 
ist oder nicht rennt der CRC munter weiter. Das einzige um ihn zu 
deaktivieren ist den CRC Teil vom SPI aus zu schalten.

Meine Frage ist nun, ob das hier jemand mal versucht hat zum laufen zu 
bringen.

Jens

von Karl H. (kbuchegg)


Lesenswert?

Jens schrieb:

> Sehe ich das richtig, dass man den CRC nicht nutzen kann und nur dann
> Sinn macht, wenn man große Datenmengen versendet?

Wie kommst du darauf.
Beim F7 ist es so, dass die ins SPI eingebaute CRC nur dann 
funktioniert, wenn die Frame-Length entweder 8 Bit oder 16 Bit ist. Das 
ist zwar eine kleine Einschränkung, aber so wild auch wieder nicht, da 
eine 10 Bit SPI in der Praxis eher selten vorkommen wird. Die 
Computertechnik basiert nun mal weitgehend darauf, dass 1 Byte aus 8 Bit 
besteht.

> Der Master sendet permanent Daten raus und egal ob der Slave nun aktiv
> ist oder nicht rennt der CRC munter weiter. Das einzige um ihn zu
> deaktivieren ist den CRC Teil vom SPI aus zu schalten.

bzw. ihn erst gar nicht einzuschalten.
Was stört dich daran? Irgendwie sehe ich dein Problem nicht.

> Meine Frage ist nun, ob das hier jemand mal versucht hat zum laufen zu
> bringen.

Probiert noch nicht. Aber laut Datenblatt sollte das kein allzugrosses 
Problem sein. Willst du nun eine CRC oder willst du keine? Bzw. was viel 
wichtiger ist: wer hängt am anderen Ende der SPI-Strecke? Kann der mit 
einer übermittelten CRC etwas anfangen oder nicht bzw. generiert der 
seinerseits eine CRC oder nicht?

von Jens (Gast)


Lesenswert?

Hallo,

also ich habe 2 gleiche Controller. Beides STM32F105 er.
Master -> Slave leider CS nur über einen IO Pin den ich per Software 
nutzen kann (SSI Bit gesetzt im Control Register).

Ich habs mir so vorgestellt, dass ich am Anfang der Übertragung (Daten 
an den Slave) die CRC Register leere und dann die Daten sende.

Wenn ich nun das letzte Word (SPI im 16 Bit mode) übertrage setze ich 
das CRCNEXT welches auch übertragen wird. Jedoch greift das CRC Error 
Flag im SR scheinbar nicht oder nicht immer.

Jens

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.