Mal wieder SD-Karte

#443014
Lesenswert?

Hallo,

ich versuche im Moment von der SD-Karte zu lesen. Das Problem ist, dass 
ich kein Startbyte von der Karte bekomme. Das erste Byte, das ich nach 
dem Lesebefehl bekomme und das nicht 0xff ist, lautet 0xfc. Das 
Startbyte sollte eigentlich 0xfe sein. Nach dem 0xfc kommen dann aber 
tatsächlich 512 Bytes, die aber leider nicht stimmen. (Ich hab die 
SD-Karte unter Linux mit dd ausgelesen zum Vergleich). Die Daten stimmen 
soweit überein, dass an den Stellen, an denen 0x00 steht auch 0x00 
gelesen wird. An den anderen Stellen liest mein Mikrocontroller falsche 
Werte.

Ausprobiert habe ich das mit 3 verschiedenen Karten (8 MB). Immer das 
gleiche Ergebnis. Mein Mikrocontroller ist der ATmega162. Ich 
programmiere in Assembler und verwende den Hardware-SPI, Mode 0. Ich 
betreibe Karte und Mikrocontroller mit 3.6V. Das Initialisieren der 
SD-Karte funktioniert ohne Probleme (74+ clocks am Anfang, dann CMD0, 
Response=1, dann CMD1 bis Response=0). Auch der Lesebefehl scheint 
akzeptiert worden zu sein (CMD17, Response=0). Ich hab versucht den 1. 
Sektor der Karte auszulesen (also Adresse 0x00000000). Nach der Response 
auf CMD17 müsste nach ein paar Takten das Starttoken 0xfe kommen, bei 
mir kommt aber 0xfc.

Weiß vielleicht jemand, was ich hier falsch mache?

Grüße,
Andreas Dangel
Gast #443082
Lesenswert?

Hi!
sowas blödes hatte ich auch schon mal, hatte aber ein 3/5Volt System und 
die Flankensteilheit war zu schlecht. Aktiver Treiber und alles war weg.
Du hast 3,6V? Schon zu hoch kann es nicht sein? Ist sonst noch irgendwas 
am SPI-Port? ...ISP eventuell? Sind irgendwo R's als Schutz drinn?
Tippe jedenfalls auf schlechte Flanken, suche mal in diese Richtung.

Viel Erfolg, Uwe
#443104
Lesenswert?

Hi!
Der ATmega162 steckt im STK500. Ich verwende außerdem den 
In-Circuit-Emulator JTAG ICE mkII. Über den programmiere ich auch den 
ATmega162.
Anfangs habe ich mit 3,0V gearbeitet, hab aber gelesen, dass manche 
Karten dann langsamer sind als mit maximaler Spannung (3,6V). Mit 3,0V 
hatte ich genau dasselbe Ergebnis.

Widerstände verwende ich keine.

Meinst du mit aktiver Treiber die Anbindung, die z.B. Ulrich Radig 
beschreibt? 
(http://www.ulrichradig.de/site/atmel/avr_mmcsd/gfx/MMC_Optimal.JPG)
Später will ich auf jeden Fall von 3 auf 5 Volt wechseln. Die 3V wollte 
ich nur zum Entwickeln der SD-Karten-Software verwenden.

Danke für den Tipp,

Gruß,
Andreas
Gast #443323
Lesenswert?

Hi!
STK500, habe ich nicht, aber untersuche mal ob die Signale am AVR 
genauso aussehen wie an der Karte. Beim STK200 sind zb. noch R's 
dazwischen um vom ISP eine Trennung zu haben.
Aktiver Treiber? Habe ich einfach mit 2 Transist +3 R's erschlagen. Ob 
es Ulrich Radig genauso macht kann ich noch nichtmal sagen.
Was mir gerade noch einfällt, ich hatte mal beim brennen (ISP) die Karte 
drinn, dann kam auch nur noch Mist. Irgendwann habe ich mir die 
Eigenschaften der Karte anzeigen lassen, das sah alles gut aus, seither 
sind in den Schreib/Lesezeiten unsinnige Werte drinn, aber die Karte 
geht.
Tippe aber trotzdem auf Signalfehler, weil wenn ich zufällig das ISP 
noch drannhabe komme ich auch nur bis CMD1, dann ist Sense.

Viel Erfolg, Uwe
#443469
Lesenswert?

Hi,
das SPI-Interface sollte ich eigentlich richtig konfiguriert haben. Mode 
0 (CPOL=0, CPHA=0), Master, beim Initialsieren habe ich als 
Clock-Frequenz f/128 (f=3.69MHz). Und die Initialisierung der SD-Karte 
funktioniert ja eigentlich auch (ich bekomme zumindest verfünftige 
Antworten).

Es sind zwei Karten von Canon, und eine von JVC. Alle drei zeigen das 
gleiche Verhalten.

Dann wird's wohl am Signal liegen. Später soll der ATmega sowieso mit 5 
Volt laufen, da noch ein LCD angeschlossen wird. Dann muss ich mich halt 
jetzt gleich mit der Pegelwandlung 3V<->5V beschäftigen. Ich hab hier 
auch schon ein paar Threads gesehen, wo das diskutiert wurde.

Nochmal Danke für die Tipps!

Andreas

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