Hallo, ich versuche gerade eine MMC Card an SIO3 vom Controller aus anzusprechen. Habe mir dafür div. Beispiele angeschaut. Jetzt ist es so, das das Reset Kommando (CMD0) nach ca. 30 x pollen mit 0x01 beantwortet wird. Jetzt kommt Kommando CMD1 hinterher. Aber auf das Kommando kommt nie die gewünschte 0x00 zurück. Hat jemand eine Idee was man da noch machen kann? Danke! Achso: die MMC ist über einen 3,3V umsetzer am 5V Controller angeschlossen. Geschwindigkeit liegt bei ca. 20 kHz. Gruss Torsten
Sende zwischen den Kommandos, bzw vor dem naechsten Kommando mal ein paar 0xff. Olaf
Hallo Torsten, ich versuche grade auch mit dem 16C80 eine MMC-Karte anzusprechen, komme aber mit der Spec nicht weiter. Die Kommandos bereiten mir Verständnisprobleme: hier steht zwar CMD0 entspricht GO_IDLE_STATE aber was heisst das, es muss doch für den GO_IDLE_STATE einen entsprechenden Hex-Wert geben, oder bin ich da auf dem Holzweg? ANdy
@olaf: Ok, probier ich morgen gleich mal aus! @andy: ja, die Kommandos fangen bei 0x40 an. Also CMD0 = 0x40. CMD1 = 0x41 usw. Wobei in der Spec nicht wirklich ersichtlich ist, was mit den oben beiden Bits passiert. Aber das mit der 0x40 machen alle so :-)
in dem hier: www.sandisk.com/pdf/oem/manual-rs-mmcv1.0.pdf Gruss
Hallo, ich versuche seit Tagen meine SD-Karte mit dem 16C80 anzusprechen, ohne Erfolg. Mein Quelldatei ist im Anhang. Kann mir jemand einen Tip geben? Andy
Du musst auch die FOR-Schleife verlassen, wenn der richtige Response kommt:
1 | ...
|
2 | SD_SendCommand(0x00,0x95); // CMD0 senden |
3 | |
4 | for(i=0; i<64;i++) |
5 | {
|
6 | response = SPI_SendeByte(0xFF); |
7 | if(response == 0x01) |
8 | {
|
9 | break; |
10 | }
|
11 | }
|
12 | |
13 | return response; |
14 | }
|
15 | ...
|
Meistens klappt der erste Reset auch nicht, daher sollte man SD_Reset() in einer Schleife aufrufen. Schau mal in die Codesammlung, da gibt es einige Beispiele.
Danke Andreas.W, hat jetzt funktioniert. Kann mir jemand sagen, wie das "Busy" beim Response-Token R1b aussieht und wie breit es ist, denn ich muss ja wissen, wieviele Clocks ich rausschicken soll? Wenn ich das "Busy" abfrage, soll ich laut Doku das CS-Signal kurzzeitig hochziehen dann wieder runter und das "Busy" nochmal abfragen. Die angegebenen Clocks sind entweder 0 oder -, was für mich heisst keine. Oder wie sieht ihr das? Andy
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.