Forum: Mikrocontroller und Digitale Elektronik SD Karte: Befehle berechnen??


von E. L. (robo-man)


Lesenswert?

Hallo!!! Ich lerne gerade eine SD-Karte zu initialisieren. Und das 
klappt schonmal. Bis auf die Befehle, ich versteh irgendwie nicht ganz 
wie man die berechnen muss. Da gibts zwar formeln aber ich weiß nicht 
was ich da einsetzen muss. Im Datenblatt steht, dass CMD0 binär: 000000 
entspricht und das CMD39 100111 entspricht. Die CMD-Zahl ist auf 
jedenfall keine hex, was dann? Kann vielleicht einer von euch dem blöden 
robo-man helfen??
Danke schonmal im Vorraus!!!

von Sven P. (Gast)


Lesenswert?

Vermutlich ist sie willkürlich gewählt.

von E. L. (robo-man)


Lesenswert?

Danke für die Antwort!!
Aber meine Frage ist wie kommt man drauf, dass
CMD0 = 0x40 0x00 0x00 0x00 0x00 0x95 ist?

von Sven P. (Gast)


Lesenswert?

Es kommt nicht darauf an, dass CMD0 gleich IRGENDWAS ist. Es kommt 
darauf an, dass du, wenn du CMD0 senden möchtest, IRGENDWAS sendest.

Die Namen der Kommandos sind wohl willkürlich, statt CMD0, CMD1, CMD2 
hätte man auch Mozart, Brahms und Pachelbel nehmen können.

von MeinerEiner (Gast)


Lesenswert?

Wie halt bei den Laufzeitfehler-Nummern von Windows & Co.
Nicht die Zahl ist wichtig, sondern der Grund = Inhalt des Fehlers.

von E. L. (robo-man)


Angehängte Dateien:

Lesenswert?

Gut Okay!! Aber das hilft mir trotzdem nicht weiter. Ich bin bei der 
initialisierung und habe CMD0 (40 00 00 00 00 95) erfolgreich gesendet 
und eine antwort 0x01 bekommen. Laut datenblatt muss ich jetzt CMD8 
senden. Und wie kann ich damit meinen 6 byte befehl zusammenstellen? Ich 
versteh nicht warum es im datenblatt so kompliziert gemacht ist.

von MeinerEiner (Gast)


Lesenswert?

Aus welchem Datenblatt ist das?
Bei dem zu meiner Karte (SanDisk) gibts den Befehl 8 z.B. garnicht.

von E. L. (robo-man)


Lesenswert?

Okay, habs herausgefunden. Hab über google eine .pdf datei gefunden, in 
der es ziemlich gut erklärt ist 
(www.uni-koblenz.de/~physik/informatik/ECC/sd.pdf). Und wie es drin 
steht haben die CMD-Zahlen doch was mit den Befehlen zu tun.
Danke für eure bemühungen und die schnellen Antworten.
Schönen Sonntag Nachmittag wünsch ich euch.

von E. L. (robo-man)


Lesenswert?


von R. W. (quakeman)


Lesenswert?

Du solltest dich am besten nur an der Spezifikation von www.sdcard.org 
orientieren, denn ich habe leider schon einige Beschreibungen gefunden 
die sich nicht an die Spezifikation halten. Gerade das Initialisieren 
wird in den meisten fertigen Codebeispielen mit CMD1 gemacht was von der 
MMC Karte stammt. Eine SD-Karte hat diesen Befehl aber nur noch 
(teilweise) wegen der Kompatibilität implementiert. Die richtige Art 
eine SD-Karte zu initialisieren geschieht aber per ACMD41 wobei eine 
Unterscheidung zwischen Spec 1.0 und Spec 2.0 sowie SD und SDHC dabei 
gemacht werden sollte (siehe Seite 95 in der Spec).
Ich habe vor ein paar Monaten selber angefangen mit SD-Karten und mir 
eine Init Routine geschrieben die sehr zuverlässig für sämtliche Arten 
von SD-Karten funktioniert, basierend auf der original Spezifikation von 
www.sdcard.org.

Ciao,
     Rainer

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.