Guten Abend zusammen Meine SD-Karte antwortet auf CMD0 um 2 Takte nach rechts (also um 2 Takte zu spät) auf ein CMD Kann mir jemand sagen, wie so etwas zustande kommt? Die Antwort ist (wenn man diese um 2 Takte nach links verschiebt, korrekt) Ich sende zu beginn auch fleissig Dummy CLK's
>Meine SD-Karte antwortet auf CMD0 um 2 Takte nach rechts (also um 2 >Takte zu spät) auf ein CMD Zieh nach dem ersten CMD0 mal die CS Leitung high. Dann wieder CS auf low und CMD0 noch mal senden. Der Versatz sollte dann weg sein.
Die Karte macht ganz normal weiter... Die scheint das Chip Select nicht zu kümmern! Merkwürdig....
>Die Karte macht ganz normal weiter...
Du musst schon noch das Response abholen bevor du CS high ziehst;)
holger schrieb: > Du musst schon noch das Response abholen bevor du CS high ziehst;) So nochmals einen Versuch :) Was meinst du dazu?
>So nochmals einen Versuch :) >Was meinst du dazu? Sende noch mal ein 0xFF zwischen CS high und CS low.
holger schrieb: > Sende noch mal ein 0xFF zwischen CS high und CS low. Ändert leider nicht viel... Ich glaube langsam, diese Karte hat was gegen mich :)
ist denn eine billige 3,3V Anpassung mit Widerständen das Übel ?? (Spannungsteiler an der SD Karte? ) Wenn ja, Pegelumsetzer benutzen !!! Und alles wird gut !!
Stephan Henning schrieb: > ist denn eine billige 3,3V Anpassung mit Widerständen das Übel ?? > (Spannungsteiler an der SD Karte? ) > Wenn ja, Pegelumsetzer benutzen !!! Und alles wird gut !! Leider nein.... Der uC läuft mit 3.3V Der SD Slot befindet sich zusammen mit dem uC auf einem Eval board... Verdrahtungsfehler können also ausgeschlossen werden.... Ich habe lediglich noch einen pullup von DO nach 3.3V hinzugefügt. Es sind 10k
>> Sende noch mal ein 0xFF zwischen CS high und CS low. > >Ändert leider nicht viel... Die Karte sendet dir ein Illegal Command zurück würde ich sagen. Versuch doch statt der 0x00 Dummy Writes mal 0xFF.
Claudio hediger schrieb: > Stephan Henning schrieb: >> ist denn eine billige 3,3V Anpassung mit Widerständen das Übel ?? >> (Spannungsteiler an der SD Karte? ) >> Wenn ja, Pegelumsetzer benutzen !!! Und alles wird gut !! > > Leider nein.... > > Der uC läuft mit 3.3V > > Der SD Slot befindet sich zusammen mit dem uC auf einem Eval board... > Verdrahtungsfehler können also ausgeschlossen werden.... > > Ich habe lediglich noch einen pullup von DO nach 3.3V hinzugefügt. > Es sind 10k Schade... ist eine häufige Ursache.
Ich hatte ein ähnliches Verhalten. Es hat geholfen vor der Benutzung der Karte /CS auf high zu setzen, ein paar Bytes zu senden, dann wieder auf low und sie dann 'richtig' zu initialisieren.
Die SD Spec schreibt 8 Clocks vor, die man nach dem ziehen des CS auf high Pegel zum Deselektieren senden muss. Ich mache dies, indem ich einfach noch ein 0xFF sende. Nochwas: Wenn man der Karte kein neues Kommando senden will - etwa zum Lesen des Statusbytes - sollte man immer 0xFF senden. Mit dem höchstwertige Bit als "0" signalisiert man den Start eines neuen Kommandos - "start Bit".
holger schrieb: > Die Karte sendet dir ein Illegal Command zurück > würde ich sagen. Versuch doch statt der 0x00 Dummy Writes > mal 0xFF. Meinst du die 0xFF beim zweiten CMD0 also 0x40 0xFF 0xFF 0xFF 0xFF 0x95? eric schrieb: > /CS auf high zu setzen, ein paar Bytes zu senden, dann wieder auf low > und sie dann 'richtig' zu initialisieren. Vor der Sequenz die du im Bild siehst, sende ich 80+ 0xFF Dummy Clocks zur Karte mit CS High Turbo J schrieb: > Die SD Spec schreibt 8 Clocks vor, die man nach dem ziehen des CS auf > high Pegel zum Deselektieren senden muss. Ich mache dies, indem ich > einfach noch ein 0xFF sende. Habe ich auch gemacht... (Siehe den schlitz vo CS High ist in der mitte)
>>Versuch doch statt der 0x00 Dummy Writes >> mal 0xFF. >Meinst du die 0xFF beim zweiten CMD0 also 0x40 0xFF 0xFF 0xFF 0xFF 0x95? Nein,, ich meine die davor und dahinter.
holger schrieb: > Nein,, ich meine die davor und dahinter. Hab ich nun mal angepasst... Doch leider antwortet die Karte nun gar nicht mehr....
>Doch leider antwortet die Karte nun gar nicht mehr....
Dann wird es jetzt Zeit den LogicAnalyzer beiseite zu
legen und das Osci raus zu holen.
Nachtrag: Du solltest nach dem Kommando mal bis zu 8 Dummybytes senden. Einige Karten antworten nicht unbedingt gleich nach dem ersten.
Mal ne blöde Frage: Nach den beiden 0xFF am Ende des Befehls wird die CS Leitung schon vor 8 weiteren Clocks auf High gezogen. Wie geht das denn?
Es scheint nun zu klappen :) juhuiii und das auch noch Taktsynchron :) Es scheint jedoch daran gelegen zu haben, wie bereits von holger vermutet, das ich vorher immer 0x00 als Dummybyte gesendet habe und nicht 0xFF. Weshalb es jedoch erst jetzt geklappt hat mit dieser Änderung ist mir schleierhaft... Ich habe es nun mehrmals getestet und es funktioniert immer wieder.... Anbei mal die Erfolgreichen bilder :) Gibt es ein Kommando, welches ich senden könnte um endgültig zu klären, ob alles mit der Kommunikation IO ist? Es scheint auch nur ein Dummybyte zu reichen nach dem Command. Ich danke euch vielmals für die Zeit, welche ihr aufgebracht habt um mir bei meinem Problem zu helfen :) Aber bevor ich den Thread so zusagen abschliesse, möchte ich schon noch sicher sein, das nun alles klappt... Eben, wie bereits erwähnt, vielleicht kennt ja jemand ein CMD welches sicher nur geht wen alles klappt :) holger schrieb: > Mal ne blöde Frage: > > Nach den beiden 0xFF am Ende des Befehls wird die > CS Leitung schon vor 8 weiteren Clocks auf High gezogen. > Wie geht das denn? Den CS mache ich manuell... Deshalb ist das möglich :) holger schrieb: > Nachtrag: Du solltest nach dem Kommando mal bis zu 8 Dummybytes > senden. Einige Karten antworten nicht unbedingt gleich nach dem > ersten. Hab ich gemacht holger schrieb: > Dann wird es jetzt Zeit den LogicAnalyzer beiseite zu > legen und das Osci raus zu holen. Gute idee... hätte mich gefreut noch ein paar Oszi bildchen zu posten :)
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.