Hallo, ich arbeite gerade an einer Initialisierungsroutine für SD-Karten. Als Basis verwende ich das Dokument "Simplified Physical Layer Spec" der SD Card Association http://www.sdcard.org/about/memory_card/pls/. Nach dem Power-UP sende ich zunächst ein Reset (CMD0), dann CMD8, um auch High capacity Karten initialisieren zu können. Meine Karte unterstützt dies aber noch nicht. Dann schicke ich ACMD41 (genauer gesagt CMD55 und dann CMD41), und die Karte antwortet mir mit dem OCR - Register. Der CRC stimmt nicht, ds scheint aber laut Spec wohl so richtig zu sein. Leider ist das Busy Bit (Bit 31) bei mir immer LOW, was laut Spec bedeutet, dass die Karte noch mit der Initialisierung beschäftigt ist. In Kapitel 4.2.3 steht nämlich: > The busy bit in the OCR is used by the card to inform the host that > initialization of ACMD41 is completed. Setting the busy bit to 0 > indicates that the card is still initializing. Setting the busy bit to 1 > indicates completion of initialization. The host repeatedly issues > ACMD41 until the busy bit is set to 1. Das Bit will aber partout nicht 1 werden, solange ich auch warte. Die sonstigen OCR- Werte scheinen plausibel. Da ich hier nicht weiterkomme, habe ich mir eine ältere Spezifikation von Sandisk angeschaut : http://www.sandisk.com/Assets/File/OEM/Manuals/ProdManiNANDAbr1.1.pdf. Dort steht: > Besides the operation voltage profile of the modules, the response to > ACMD41 contains a busy flag, indicating that the module is still working > on its power-up procedure and is not ready for identification. This bit > informs the host that the module is not ready. The host has to wait (and > continue to poll the modules, each one on his turn) until this bit is > cleared. Hier steht also genau das Gegenteil von oben. Bit 0 heisst Karte ist bereit. Was ist denn nun richtig? Hat sich die Spezifikation geändert oder macht jeder Kartenhersteller was er will? Wie soll ich dann herausbekommen, was meine Karte nun tut? Wenn irgendjemand im Forum bereits mit diesem Problem konfrontiert wurde, ich wäre ihm für Hinweise sehr dankbar. MfG Walter
Sorry, ein Problem mit der Zitierfunktion. Jetzt soll's besser lesbar sein Hallo, ich arbeite gerade an einer Initialisierungsroutine für SD-Karten. Als Basis verwende ich das Dokument "Simplified Physical Layer Spec" der SD Card Association http://www.sdcard.org/about/memory_card/pls/. Nach dem Power-UP sende ich zunächst ein Reset (CMD0), dann CMD8, um auch High capacity Karten initialisieren zu können. Meine Karte unterstützt dies aber noch nicht. Dann schicke ich ACMD41 (genauer gesagt CMD55 und dann CMD41), und die Karte antwortet mir mit dem OCR - Register. Der CRC stimmt nicht, ds scheint aber laut Spec wohl so richtig zu sein. Leider ist das Busy Bit (Bit 31) bei mir immer LOW, was laut Spec bedeutet, dass die Karte noch mit der Initialisierung beschäftigt ist. In Kapitel 4.2.3 steht nämlich: > The busy bit in the OCR is used by the card to inform the host that > initialization of ACMD41 is completed. Setting the busy bit to 0 > indicates that the card is still initializing. Setting the busy bit to 1 > indicates completion of initialization. The host repeatedly issues > ACMD41 until the busy bit is set to 1. Das Bit will aber partout nicht 1 werden, solange ich auch warte. Die sonstigen OCR- Werte scheinen plausibel. Da ich hier nicht weiterkomme, habe ich mir eine ältere Spezifikation von Sandisk angeschaut : http://www.sandisk.com/Assets/File/OEM/Manuals/ProdManiNANDAbr1.1.pdf Dort steht: > Besides the operation voltage profile of the modules, the response to > ACMD41 contains a busy flag, indicating that the module is still working > on its power-up procedure and is not ready for identification. This bit > informs the host that the module is not ready. The host has to wait (and > continue to poll the modules, each one on his turn) until this bit is > cleared. Hier steht also genau das Gegenteil von oben. Bit 0 heisst Karte ist bereit. Was ist denn nun richtig? Hat sich die Spezifikation geändert oder macht jeder Kartenhersteller was er will? Wie soll ich dann herausbekommen, was meine Karte nun tut? Wenn irgendjemand im Forum bereits mit diesem Problem konfrontiert wurde, ich wäre ihm für Hinweise sehr dankbar. MfG Walter
Klappt leider nicht mit dem Formatieren, in der Vorschau wirds richtig angezeigt, aber dann... Dher nochmal der Link zu sandisk in 2 Zeilen: http://www.sandisk.com/Assets/File/OEM/ Manuals/ProdManiNANDAbr1.1.pdf Gruss Walter
Hallo, ich habe es durch langes Probieren endlich herausgefunden: BUSY ist tatsächlich aktiv LOW, d.h. die Karte ist beschäftigt, wenn dieses Bit 0 ist. Nach einiger Wartezeit wird es dann 1, d.h. inaktiv. In der SD Spec steht's richtig, im Sandisk Datenblatt ist es etwas unglücklich formuliert: Clear busy flag heisst in diesem Zusammenhang Übergang von 0 nach 1. Gemeint ist wohl, dass der Busy Status gelöscht wird. Was die SDHC Karten betrifft, ist der wesentliche Unterschied die Adressierung, die hier blockweise (512 byte) anstelle von byteweise erfolgt. Bis jetzt konnte ich noch nicht damit experimentieren, da mir eine entsprechende Karte fehlt. Bin gerade dabei, die Unterscheidung MMC/SD Karte zu programmieren. Da gibt es feine, aber entscheidende Unterschiede: Z.B. erzeugt die SD Karte die RCA Adresse selbst, während man der MMC Karte ihre Adresse zusenden muss. Gruss Walter
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.