HI Leute! Ich habe ein bisschen Probleme mit der Checksummenberechnung der SD/MMC-Speicherkarten. Das Generatorpolynom ist: G(x) = x^7 + x^3 + 1 M(x) ist die zu übertragende Nachricht. CRC = Rest( ( M(x) * x^7) / G(x) ) So steht es im HITACHI-Datenblatt. Sendet man nun CMD0 an die Speicherkarte hängt man als CRC 1001010 an. Warum? Eigentlich müsste es doch 0 sein, oder? Und kann es sein, dass das Generatorpolynom falsch ist? Müsste es eigentlich nicht G(x) = x^6 + x^3 + x^2 + 1 heißen? Gruß Konstantin
Gast
#600980
Das geht alles auch ohne CRC-Berechnung. Wenn du es doch mit machen möchtest, schaun noch ein weiters mal ins Datenblatt, oder nimm dir ein anderes Datenblatt zur Hand, oder schau dir die 100000 von Beispielen im Internet an.
Gast
#600983
Noch was konstruktives: 1. Schau dir CMD59 an. 2. G(x) = x^7 + x^3 + 1 ist richtig. 3. Da CMD0 eine Konstante ist, kannst du als CRC auch eine Konstante nehmen, also brauchst du die CRC nicht berechnen.
Gast
#600985
Noch was. Die CRC ist 7 Bit lang. Diese 7 Bit werden in Bit 7 bis Bit 1 gespeichert und Bit 0 ist immer 1. Steht aber alles im Datenblatt.
OK Danke. Folgendes noch. Im Datenblatt steht: M(x) = (first bit) * x^n + (second bit) * x^(n-1) + ... + (last bit) * x^0 müsste es nicht so heißen?: M(x) = (last bit) * x^n + ... + (second bit) * x^1 + (first bit) * x^0 Gruß Konstantin
hier mal den Code den ich benutze
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
und hier in der Anwendung beim Senden eines Kommandos
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
Gruß Hagen
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.