Forum: Mikrocontroller und Digitale Elektronik SD-Karte AVR


von kehrblech (Gast)


Lesenswert?

Hallo,

ich weiß, das Thema gab es schon oft. Ich habe aber in der Suche nichts 
passendes zu meinem Problem gefunden.
Ich versuche mit einem ATmega8 eine 2GB SD-Karte von SanDisk 
anzusteuern. Zum testen benutze ich den unveränderten Programm-Code von 
Ulrich Radig.
Allerdings lässt sich die Karte überhaupt nicht initialisieren. Nach dem 
cmd0 soll sie 0x01 senden (Idle State). Stattdessen kommt 0x80 an. Das 
kann doch eigentlich nicht sein, oder? Das MSB muss doch immer 0 sein.

Woran kann das liegen?

Die Verdrahtung habe ich schon oft überprüft, habe aber keine Fehler 
finden können. Der AVR läuft mit 5V, der Spannungsteiler zur SD-Karte 
ist mit zwei 1k-Widerständen aufgebaut. Es kommen also 2,5V bei den 
Eingängen der Karte an. Sicher nicht optimal, aber da die Karte 
antwortet, kann das doch nicht das Problem sein.

Gruß,
Jan

von holger (Gast)


Lesenswert?

>Der AVR läuft mit 5V, der Spannungsteiler zur SD-Karte
>ist mit zwei 1k-Widerständen aufgebaut. Es kommen also 2,5V bei den
>Eingängen der Karte an. Sicher nicht optimal, aber da die Karte
>antwortet, kann das doch nicht das Problem sein.

Das Thema Spannungsteiler als Pegelwandler für SD Karten wurde
hier durchaus schon öfter durchgekaut. Meist endete es damit
das die Probleme mit vernünftigen Pegelwandlern behoben waren.

Kannst ja mal ein bißchen suchen.

von Christian H. (thunder2002) Benutzerseite


Lesenswert?

Also 2,5V klingt extrem schlecht für SD Cards, meine SD Card Schaltung 
steht zwar noch aus, aber von meiner Vorabinformierung kann ich nur 
wiederholen das immer wieder erwähnt wird wie kritisch die 
Spannungsversorgung solcher Karten ist. Übrigens eine einfach, wenn auch 
nicht gute, Schaltung mit Wiederständen von 220 Ohm und 430 Ohm ergeben 
ziemlich genau 3,3V. Bei mir nach einer auf 5V stabilisierten Spannung 
aus einem 7805er komm ich auf 3,34V :) Bei Last kann die so einfach 
erzeugte Teilspannung aber leicht schwanken.

Richtige Spannungsteiler sind zwar nicht billig aber sicher ratsam. Hab 
hier immer ein 4 Bein SIL DC/DC 5V->3,3V Steinchen rumfliegen, ist für 
verlässliche Tests wo man sich um wichtigeres kümmern will super. Passt 
aufs Breadboard aber kostet gerne 4€ bei Reichelt.

EDIT: Reichelt Artikel-Nr.: SIM1-0503 SIL4

von kehrblech (Gast)


Lesenswert?

So, jetzt läuft es. Im Code von Ulrich Radig war das Clock-Signal 
invertiert. Ich habe Software-SPI benutzt. Hat das echt noch nie jemand 
vorher bemerkt? Oder muss es bei manchen SD-Karten invertiert sein?

von R. W. (quakeman)


Lesenswert?

Ich habe in den letzten Tagen ebenfalls mit der Ansteuerung einer 
SD-Karte herumexperimentiert und den Code von Ulrich Radig als 
Ausgangsbasis genommen. Da ich den Code aber auf einen LPC935 (8051) 
portieren musste, habe ich teile davon neu geschrieben. Dabei sind mir 
auch ein paar Sachen im Code aufgefallen, die meiner Meinung nach nicht 
so ganz richtig sind (Vor allem die Steuerung des CS Signals). Aber 
alles in allem war der Code schon eine große Hilfe um nicht jede 
einzelne Methode komplett neu schreiben zu müssen.
Ich habe beim Portieren vor allem die Initialisierung von CMD1 auf 
ACMD41 abgeändert, was für SD-Karten der richtige Befehl ist und 
SD-Karten nach Spezifikation v2.0 CMD1 nicht mehr unterstützen. Somit 
kann ich unterscheiden zwischen SD-Karten v1.0 und v2.0 sowie SD und 
SDHC.
Mittlerweile klappt die Initialisierung (v1.0 und v2.0) und ich kann das 
CID und CSD Register auslesen. :)

Ciao,
     Rainer

von Marvin M. (Gast)


Lesenswert?

Mir hat dieses Projekt geholfen, einen AVR mit einer SD-Card zu 
verheiraten:
http://pontoppidan.info/lars/index.php?proj=mmc2iec

Ist eigentlich für einen C-64 gedacht, aber man kann die FAT-Routinen 
wunderbar für andere Projekte verwenden.

von candp (Gast)


Lesenswert?

Löten kann er auch...sehenswert!

von me (Gast)


Lesenswert?

Hallo,
für avr kann man auch http://www.mikrocontroller.net/articles/AVR_FAT32 
diese lib benutzen.
Soft und Hardware-SPI, multi-Block Write und Read, rekursives Löschen 
von Ordnern usw...

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.