Hallo, ich habe mir einen SD-Karten Treiber auf SPI-Basis für meinen uC geschrieben. Dabei habe ich alles auf eine Sektor-Größe von 512 Bytes ausgelegt (hatte scheinbar ein altes Sec-Dokument). Nun habe ich gesehen, dass neuere Karten auch andere Sektor-Größen haben können (1024/2048). Ich frage mich aber ob das überhaupt ein Problem ist, da die Adressierung ja eh Byte-Weise ist. Sollte die Karte doch nicht stören, wenn man dann nur 512 Bytes liest?
wenn die karte weiß das nur 512byte gelesen werden sollte sie das mitmachen, wenn sie allerdings damit rechnet das mehr gelesen wird, dann wird der befehl des auslesens für die karte nicht abgeschlossen, sie wartet sozusagen darauf die restlichen bits und bytes auszugeben
SD-Karten haben eine Sectorsize von 512 Bytes. Alle, ohne Ausnahme. Das gilt auch für SDHC-Karten. SD-Karten mit 2 GBytes haben im Descriptor eine Readblocksize von 1KByte. SD-Karten mit 4 GBytes haben dort 2 KByte. (Sonst könnte man die Größe nicht korrekt berechnen. Mehr Platz ist im Descriptor nicht!). SDHC-Karten haben deshalb einen anderen Descriptor. Wenn man bei 2 oder 4 GByte SD-Karten die Readblocksize tatsächlich zum Lesen verwendet, fällt man auf die Nase. Es geht nicht. Also: Readblocksize aus dem Descriptor immer nur zur Größenberechnung verwenden, und für den Datentransport immer 512 Bytes verwenden.
Aha, also dann sollte ja nichts schief gehen. Muss ich mal prüfen und so eine Karte beschaffen. Ich setze im moment in meiner Init-Routine mit CMD16 die Blocklen auf 512, das solle dann ja auch mit diesen Karten klappen.
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.