STM32 SPI CRC hat das einer mal versucht

Gast #4328045
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
#4328070
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?
Gast #4328194
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

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.