SD Karte im SPI Mode debuggen

OP #2342398
Lesenswert?

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!
Gast #2342919
Lesenswert?

> 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.
#2343017
Lesenswert?

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
OP #2343407
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren