Forum: Mikrocontroller und Digitale Elektronik SD MMC an Atmega8


von Stefan (Gast)


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

von Stefan (Gast)


Angehängte Dateien:

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.

von Mark L. (m2k10) Benutzerseite


Lesenswert?

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

von Stefan (Gast)


Lesenswert?

Hallo!

Vielen Dank für die Antwort. Das erklärt einiges.

Schöne Grüße

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
Noch kein Account? Hier anmelden.