Hallo, Ich möchte eine SPI Übertragung per CRC absichern. Es geht um einen Motorregler für den Traktionsantrieb eines Modellfahrzeugs. Der Regler basiert auf einem STM32F405 und arbeitet mit 16kHz Regeltakt. Über Voll-Duplex SPI werden via DMA asynchron ca alle 20ms 3 Datenpakete a 16 Bit empfangen. Eine CS Leitung gibt es nicht, nach dem empfangen des letzten Datenpakets wird aber eine gewisse Zeit gewartet, bis neu empfangen wird. Darüber soll sichergestellt werden, dass die Datenpakete in der richtigen Reihenfolge und nicht bitweise verschoben ankommen. Nach einem Reset einer der beiden beteiligten µC könnten aber durchaus 3 falsche Pakete empfangen werden. Diese sollen auf jeden Fall detektiert werden. Da für meine Nutzdaten (Sollgeschwindigkeit, zulässige Maximalbeschleunigung und zulässiger Ruck) 10 bis 11 Bit ausreichend sind und der STM ja über eine Hardware CRC Einheit verfügt würde ich die Übetragung gerne per CRC absichern. Würden falsche Daten empfangen gäbe es für ca 20ms (bis zur nächsten Übertragung) falsche Sollwerte. Ich habe nicht besonders viel Ahnung von Codierungstheorie, bin aber bei meiner Recherche auf den Hamming Code gestoßen, mit dem auch ein Bit Fehler korrigierbar sind. Da ich 16 Bit zur Verfügung habe würde sich der extended Hamming Code (16, 11) anbieten. Ist der für diesen Anwendungszweck geeignet? In diesem Thema (Beitrag "Hamming Code") ist die Rede davon, dass der Hamming Code bei verschobenen Bits nutzlos ist. Falls er geeignet wäre, wie mache ich aus den CRC Polynomen des Hamming Code (15, 11) ( z^4 + z + 1 ) und dem CRC Polynom für Parity Bits ( x + 1 ) ein neues CRC Polynom? Kann ich die einfach multiplizieren und die Vorfaktoren modulo 2 nehmen ( z^5 + z^4 + z^2 + 1 )? Die Ordnung des Polynoms ist die die ich erwarten würde. Falls nein, welchen Code könnte ich nehmen? LG und vielen Dank, Oskar
EDIT: Mir ist bewusst, dass die Hardware CRC Einheit keine Fehler korrigieren wird. Ich würde die Einheit benutzen, um komplett fehlerfrei übertragene Pakete (oder solche, deren Fehler nicht detektierbar sind) direkt weiter zu verwenden, in den Übrigen würde ich dann versuchen Fehler zu korrigieren und sie andernfalls komplett verwerfen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.