SD MMC an Atmega8

Gast #2711057
Lesenswert?
• ▲
▼
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
Gast #2711093
Lesenswert?
• ▲
▼
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.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren