mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SD-Karte AVR


Autor: kehrblech (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian Hunke (thunder2002) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: kehrblech (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: R. W. (quakeman)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marvin M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: candp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Löten kann er auch...sehenswert!

Autor: me (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.