Moin ! Ich bin gerade dabei mein geschriebenes C - Programm zu debuggen, indem ich eine SD Karte initialisiere und Daten schreibe/lese. Funktioniert alles einwandfrei, jedoch reagiert die Karte ab und an ein wenig "zickig". Da ich debugge kommt es häufiger vor, dass ich den Prozess zwischendrin terminiere um den Fehler auszumerzen bzw. debug schnittstellen einzufügen. Starte ich danach das Programm erneut, reagiert die SD Karte nichtmehr und meine Zählvariable, die auf "in IDLE Mode?" gelinkt ist, schlägt an. Die Karte reagiert nichtmehr auf ein CMD0 und ich lese nur noch 0xFF's von der MISO Leitung ein. Nehme ich die Spannungsversorgung weg und/oder steck die SD Karte erneut in den Slot, funktioniert es wieder. Beim direktem "run", also ohne terminiertem debug, habe ich das Verhalten noch nicht beobachtet. Was mich interessiert ist ob jemand von Euch schonmal das gleiche Verhalten beobachtet hat. Es verwundert mich halt nur, da vor jedem CMD0 eine Warmlaufphase erfolgt indem ich Dummyclocks etc. sende. Verwenden tu ich: XPS SPI Core SanDisk 2Gb (2) SD Karte Gruss!
> Es verwundert mich halt nur, da vor jedem CMD0 eine Warmlaufphase > erfolgt indem ich Dummyclocks etc. sende. Auch die 8 dummy clocks vor der High-> Low Flanke auf dem Chip Select (CS)? Um ein CS "high" - also NICHT selektiert - zu erkennen, brauchen die SD-Karten bis zu 8 clocks (also einfach 0xFF via SPI senden bei CS=high). Macht man das nicht, könnte es beim Debuggen passieren dass der µC und die SD Karte unterschiedlicher Meinung sind, welches Bit vom Byte grade über die Leitung geht - weil eine Übertragung mitten im Byte abgebrochen wurde. Dann ist natürlich keine Kommunikation möglich.
Hallo, schau Dir mal diese Seite an: http://elm-chan.org/docs/mmc/mmc_e.html, besonders den Abschnitt über die Stromversorgung, bzw. auch die Beispielschaltung in diesem Archiv: http://elm-chan.org/fsw/ff/ffsample.zip Evtl. könntest Du wie bei Chan einen PMOS Highside Schalter einbauen, um hängende Karten resetten zu können. Die Versorgungsspannung sollte wirklich ausreichend glatt sein. Mehr als 60mV Ripple sind unzulässig, ich hatte auch schon Probleme mit einem bestimmten Kartenfabrikat, als die Versorgung nicht ganz sauber war. Gruß, Bernhard
Turbo J schrieb: >> Es verwundert mich halt nur, da vor jedem CMD0 eine Warmlaufphase >> erfolgt indem ich Dummyclocks etc. sende. > > Auch die 8 dummy clocks vor der High-> Low Flanke auf dem Chip Select > (CS)? > > Um ein CS "high" - also NICHT selektiert - zu erkennen, brauchen die > SD-Karten bis zu 8 clocks (also einfach 0xFF via SPI senden bei > CS=high). > > Macht man das nicht, könnte es beim Debuggen passieren dass der µC und > die SD Karte unterschiedlicher Meinung sind, welches Bit vom Byte grade > über die Leitung geht - weil eine Übertragung mitten im Byte abgebrochen > wurde. Dann ist natürlich keine Kommunikation möglich. Jo mache ich :). Danke dir für die Info Bernhard ! Ich werd das mal durchlesen. Gruss
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.