Un CRC « qui ne tombe pas juste » vient presque toujours d’un paramètre : polynôme, valeur initiale, réflexion des bits ou XOR final. L’outil les rend tous réglables et propose les variantes les plus courantes, chacune vérifiée sur sa valeur de contrôle officielle (le CRC de la chaîne « 123456789 »).
CRC
–
Octets (gros-boutiste)
–
Octets (petit-boutiste)
–
Les cinq paramètres d’un CRC
| Paramètre | Rôle |
|---|---|
| Largeur | Nombre de bits du résultat (8, 16, 32…) |
| Polynôme | Le diviseur, noté sans son bit de poids fort (0x07 pour x⁸ + x² + x + 1) |
| Valeur initiale | Contenu du registre avant le premier octet ; une valeur non nulle détecte les zéros ajoutés en tête |
| Réflexion | Traitement des octets bit de poids faible en premier, comme sur une liaison série |
| XOR final | Inversion finale du résultat, pour que des données nulles ne donnent pas un CRC nul |
Deux implémentations qui ne s’accordent pas ont presque toujours la bonne largeur et le bon polynôme, mais divergent sur la réflexion ou la valeur initiale. Le nom normalisé de la variante (catalogue de Greg Cook, repris ici) lève l’ambiguïté : « CRC-16 » ou « CRC-CCITT » seuls désignent plusieurs calculs différents.
Où on les rencontre
- CRC-8/DVB-S2 : protocole CRSF (Crossfire, ExpressLRS).
- CRC-8/SMBUS (polynôme 0x07, sans réflexion) : télémétrie des ESC au format KISS.
- CRC-16/MODBUS : Modbus RTU, transmis octet de poids faible en premier.
- CRC-32/MPEG-2 : l’unité CRC matérielle des STM32 dans sa configuration par défaut.
- CRC-32/ISO-HDLC : Ethernet, zip, PNG.
- À l’inverse, la « somme de contrôle » du DShot n’est pas un CRC : c’est un simple XOR de trois quartets, sans polynôme. Elle est détaillée, avec un calculateur dédié, dans l’article Le protocole DShot décortiqué.

Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.