Nie wiem jak dokładnie obliczana jest suma kontrolna. Dajmy dla przykładu wyraz "Ala". Skorzystałem z kalkulatorów dostępnych w internecie i każdy podaje inny wynik. Próbowałem sprzętowo generować CRC32 i mi wyszło 1449053287 dziesiętnie, 565ECC67 szesnastkowo. Czy to jest poprawny wynik?
Ala
=> 7de44b80
https://www.tools4noobs.com/online_php_functions/crc32/ liczy poprawnie
Są różne wersje CRC32, różniące się użytym wielomianem: https://en.wikipedia.org/wiki/Cyclic_redundancy_check#Standards_and_common_use
Już poprawiłem błąd. Teraz sprzętowe CRC liczy sumę tak jak należy. Chciałbym wykorzystać CRC do zabezpieczenia komunikacji UART pomiędzy PC a mikrokontrolerem. Przed wysłaniem jakiegoś stringa aplikacja na PC obliczyła by crc, następnie wysłała string i crc. Mikrokontroler po debraniu stringa obliczyłby swoje crc i porównał z odebranym crc. Jeśli by się zgadzały została by wykonana pewna akcja.
Czy to jest dobry pomysł do zabezpieczenia komunikacji?
Przy mikrokontrolerach używa się zazwyczaj się CRC16... Aczkolwiek tu też jest kilka różnych standardów. Może użyj tetgo opisanego w modbusie - może się przydać do kilku rzeczy :)
Co to znaczy 'zabezpieczenie komunikacji'? CRC32 nie jest od zabezpieczenia tylko do sprawdzenia czy nie nastąpiły błędy przy transferze czy odczycie danych.
Miałem na myśli sprawdzenie poprawności transmisji. Czy CRC32 się do tego nadaje?
Do tego między innymi służy...