Forum: Mikrocontroller und Digitale Elektronik SD-Card Timing


von Martin Domke (Gast)


Angehängte Dateien:

Lesenswert?

Im Forum sind ja schon viele Skurilitäten im Zusammenhang mit SD-Karten
diskutiert worden, weswegen ich meine Frage auch noch dazustellen
möchte. Ich verwende einen PIC18F6680 um über SPI mit einer SD-Karte zu
kommunizieren. Der Controller arbeitet mit 3,3V weswegen ich keine
Spannungsteiler oder Pegelwandler zwischen der SD-Karte und dem MC
verwende. Ich habe mir viele verschieden Code-Beispiele für die
SD-Karten-Ansteuerung angesehen und daraus, unter Verwendung der
SD-Karten-Spezifikation, ein eigenes Best-Of geschrieben (siehe
Anhang).

Ich habe nun mehrere Schwierigkeiten:

1. Wenn ich meine kleine Test-Routine laufen lasse, in der ich die
Karte initialisiere, dann einen Block schreibe und ihn dann sogleich
wieder auslese, funktioniert das nur, wenn ich während des Zugriffs
Debugging-Informationen über die RS232-Schnittstelle ausgebe. Diese
Ausgaben sind von der Form "Sende Kommando x erhalte Antwort y". Man
könnte denken, dass die printf-Funktion den Protokoll-Ablauf zeitlich
etwas entzerrt, aber nach meinem Dafürhalten müsste das egal sein.

2. Wenn ich die gleiche Routine laufen lasse, die SD-Karte aber nicht
in den Halter stecke, dann sollte doch eigentlich beim Senden des CMD0
ständig die Antwort 0x00 gelesen werden. Die Ausgabe zeigt aber an,
dass neben 0x00 auf häfuiger 0xff "empfangen" wird. Wie kann das
sein. Muss die Datenleitung für diesen Fall an einen Pull-Down
angeschlossen sein?

von Martin Thomas (Gast)


Lesenswert?

Betr. Pull-Up vgl. SD-Card Manuals von SanDisk, sie werden dort
empfohlen.  "Flackernder" MISO-Eingang ist auch nicht weiter
erstaunlich wenn der Pin "in der Luft haengt". AVRs bietet z.B.
interne Pull-Ups, k.A. ob der genutzte PIC auch. Betr. Initialisierung,
Timing, Read/Write vgl. Code von "Chan"
http://elm-chan.org/fsw/ff/00index_e.html . Der Code ist gut
portierbar.

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.