www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit SD-Karte / Pull-Ups ?


Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe ein Problem mit meiner SD-Karte.

Initialisierung klappt soweit, die Karte liefert mir auch schön alle 
Werte zurück die ich brauche (Status-Flags/Kapazität etc.)

Nur wenn ich versuche zu lesen bekomme ich nur 0x00 zurück. Die Adresse 
die ich anlege (0) wird auch so quittiert. Der Gegenversuch eine Adresse 
die nicht durch 512 teilbar ist zu senden wird auch mit einem 
Adressfehler zurückgewiesen.

Jetzt habe ich mal getestet ob es am Mode/Adressierung etc. der Karte 
liegen könnte und habe einfach mal den ersten Block löschen lassen mit 
START_SEL_BLOCK, END_SEL_BLOCK und ERASE. Das hat auch wunderbar 
funktioniert, daher sollte die Kommunikation mit der Karte ja eigentlich 
ok sein..

Brauche ich an DAT0-DAT3 vielleicht Pull-Ups ? ich habe gemessen und 
laut SD Physical Spec sollten im Ruhemodus bei DAT0-DAT3 High-Pegel 
anliegen. Das ist aber nur bei DAT3 der fall, die anderen sind low und 
mit oscilloskop ist da auch keinerlei aktivität feststellbar.

Grüße

Autor: T. H. (mctx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bist Du zwischenzeitlich mit Deinem Problem weitergekommen?

Ich hab gerade das gleiche Problem. Initialisieren geht, Schreiben auch, 
nur lesen gibt 00 zurück (komischerweise ging es heute mittag mal eine 
zeitlang, dann habe ich was am Toplevelcode geändert (nicht im Physical 
layer..), leider keine Sicherheitskopie, und jetzt lese ich nur noch 
"0x00". Die Karte scheint ok zu sein, zwei andere Karten weisen das 
gleiche Fehlerbild auf.

Autor: Kai Franke (kai-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe auch einen Aufbau am Laufen, auch ohne Pullups und es 
funktioniert (noch) einwandfrei.
Ich kann sogar bei einem Wert anfangen zu lesen, der nicht durch 512 
teilbar ist :)
Wenn einer von euch rausfindet, dass man irgendwo Pullups braucht, gebt 
Bescheid, dann bau ich die auch noch ein, will ja schließlich, dass es 
auch weiterhin funktioniert

Autor: T. H. (mctx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in der SDCARD Spec steht eindeutig, dass man im SPI-Mode die nicht 
benutzten SD-Datenleitungen mit Pull-Ups versehen soll.
Ich denke das spannende Thema sind die SPI Datenleitungen. hier sieht 
man die unterschiedlichsten Varianten im Netz.

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
es wäre gut zu wissen wenn man euch helfen soll, welcher Controller, 
SDHC oder SD, FAT16 oder FAT32, SPI-Ansteuerung oder nicht und einen 
kleinen Codeausschnitt, wo ihr die Leseroutine macht.
Gruss

Autor: fubu1000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aso und Pull-Ups braucht ihr nicht meine läuft schon seit Jahren ohne!!!
Gruss

Autor: T. H. (mctx)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das komplette File (Ansteuerung im SPI-Mode mit dsPIC, ältere Sandisk 
16MB SDCARD, eine 2. 32MB Type von Sandisk zeigt den gleichen fehler).

Im Hauptprogramm initialisiere ich die Karte mit InitSD, dann InitMedia, 
danach beschreibe ich ein paar Sektoren mit writeSector und lese einen 
des Sektoren in einen Buffer zurück. Funktioniert alles bis ich den 
Sektor lesen möchte. Hier liefert readSector "0x01" zurück.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hier liefert readSector "0x01" zurück.
>    return ( r == DATA_START);      // return TRUE if successful

Was soll auch anderes zurückgegeben werden wenn das DATA_START
Token gefunden wurde ? Wenn ne 0 zurückkommt hast du ein Problem.

Autor: T. H. (mctx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo, danke für die Antwort.

ich initialisiere "buffer[]" vor dem Sektor-Auslesen mit "0x05", nach 
"readSector" müßte dort aber das LSB der Adresse stehen, das ich zuvor 
reingeschrieben habe.

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.