Forum: Mikrocontroller und Digitale Elektronik CRC calculation Unit auf einem STM32 mit Startwert füttern


von Josef V. (Firma: e. GmbH) (htpem)


Lesenswert?

Hallo zusammen,

ich habe auf einem STM32 F1 eine Applikation auf der ich (unabhängig 
voneinader) verschiedene CRC32-Prüfsummen berechnen muss.

Der STM32 stellt mir dazu eine CRC calculation unit zur Verfügung.

Ich habe nun folgendes Problem:
Wie bringe ich es fertig, dass ich eine laufende CRC-Berechnung 
unterbreche, dazwischen eine andere Berechnung mache und die erste 
laufende Berechnung wieder fortsetze?

Der Lösungsansatz sieht bisher so aus:

1. Den aktuellen Wert vom CRC-Modul in einer Variable zwischenspeichern:
uint32_t Zwischenvariable = CRC_GetCRC();

2. Dem CRC-Modul einen Reset verpassen
CRC_ResetDR();

3. Die andere Zwischenberechnung machen:
uint32_t Pruefsumme = CRC_CalcBlockCRC(pBuffer, BufferLength);

4. Dem CRC-Modul einen weiteren Reset verpassen
CRC_ResetDR();

5. Die Zwischenvariable als Startwert in das Datenregister des 
CRC-Moduls unterbringen.

Hier liegt leider das Problem. Bei einem Schreibzugriff wird der 
übergebene Wert in der Prüfsumme verrechnet. Was ich jedoch brauche ist 
diesen Wert zu restaurieren (Zwischenvariable). Folgerichtig muss ich 
die Prüfsumme praktisch irgendwie "rückwärts" verechnen und in das 
Datenregister schreiben, so dass nach der Berechnung genau der alte Wert 
im Datenregister auftaucht.
Ich habe jedoch gerade keine Idee wie ich das realisieren könnte.

Weis jemand Rat?

Grüße
htpem

von Detlef K. (adenin)


Lesenswert?


von Josef V. (Firma: e. GmbH) (htpem)


Lesenswert?

Danke, funzt perfekt.
Genau was ich gesucht habe.

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.