Bonjour,
je sais que la question à été posée plusieurs fois, mais je ne comprend pas du tout où je me trompe dans mon raisonement. Commençons par le commencement, le CRC sert de vérification lors de transmission comme l'éthernet, USB... Je m'intéresse à la liaison avec une carte SD qui impose un CRC 7.
La définition du calcul est la suivante:
Comme indiqué, les messages sont sur 40 bits, soit 5 hexadigits. Dans le cas le plus simple, le message est le suivant:The CRC7 check is used for all commands, for all responses except type R3, and for the CSD and CID
registers. The CRC7 is a 7-bit value and is computed as follows:
Generator polynomial: G(x) = x7 + x3 + 1.
M(x) = (first bit) * xn + (second bit) * xn-1 +...+ (last bit) * x0
CRC[6...0] = Remainder [(M(x) * x7)/G(x)]
The first bit is the most left bit of the corresponding bit string (of the command, response, CID or CSD).
The degree n of the polynomial is the number of CRC protected bits decreased by one. The number of
bits to be protected is 40 for commands and responses (n = 39), and 120 for the CSD and CID (n =
119).
(2)010000000000000000000000000 0000000000000=(16)0x40 0x00 0x00 0x00 0x00.
En cherchant sur internet j'ai vu que G(x)=x^7 + x^3 + 1 correspond à (10)137=(2)10001001. De par le même raisonnement mon message est donc M(x)=x^38 ou 2^38 en base 10.
on a donc le CRC qui vaut (2^38 * 2^7)%(137)=(2^45)%(137), ce qui donne (10)7=(2)0111 hors je dois trouver (2)1001010=(10)74, où me suis-je trompé???
j'ai aussi trouvé ce site: https://www.ghsi.de/CRC/index.php?Po...sage=400000000
(normalement les paramètres sont déjà rentrés) mais le résultat n'est pas bon car il me donne (10)81 comme résultat...
merci d'avance
-----