Hallo! Vielleicht ist hier irgendwer schlauer als ich. Ich habe eine Frage zum CSD Register. READ_BLOCK_LEN ist 4 Bytes lang und hat bei einer Blockgröße von 512 Bytes den wert 9 (2^9=512). Allerdings habe ich jetzt eine SD Karte mit einer READ_BLOCK_LEN von 2048 Bytes. Ich berechne die memory capacity wie folgt, wobei BLOCK_LEN fix auf 512 Bytes (abbruch falls READ_BLOCK_LEN =/= 512 Bytes): MULT=2^(C_SIZE_MULT+2) BLOCKNR=(C_SIZE+1)*MULT memorycapacity=BLOCKNR*BLOCK_LEN Mich wundert nur eine Tatsache. Ich habe die CRC Prüfung eingeschalten. Bei der Karte mit einer READ_BLOCK_LEN > 512 Bytes und einem CMD17 bekomme ich keinen CRC fehler wenn ich nur 512 Bytes nach dem OxFE lese. Die CRC Prüfung funktioniert aber einwandfrei. Wie hängt das Feld READ_BLOCK_LEN im CSD mit der tatsächlich übertragenen Blockgröße bei einem CMD17 zusammen? Schöne Grüße Stefan
Also ich hab das nochmal genauer untersucht. Die Karte gibt tatsächlich einen 512 Byte Block nach einem CMD17 aus, obwohl READ_BLOCK_LEN > 512 Byte ist. Im Anhang befindet sich der Mitschnitt der Konsole. 1. CMD17 2. 255 255 254 -> start token 3. ....... 4. 085 170 -> 0x55 0xAA -> token für den MBR 5. 140 192 -> CRC Bytes 5. 255 255 255 255 -> Lesevorgang beendet. Karte gibt nur mehr 512 aus.
READ_BLK_LEN gibt das Maximum an, was die Karte schafft, nicht, was real eingestellt ist. Wenn du was anderes als 512 Bytes haben möchtest, musst du CMD16 verwenden (für Standard Capacity). Grüße Mark
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.