Forum: Mikrocontroller und Digitale Elektronik MMC Karten Problem


von Steffen (Gast)


Lesenswert?

Hallo!

Ich habe ein kleines Problem mit der Ansteuerung einer MMC Karte, bei
dem ihr mir vielleicht weiterhelfen könnt.

Ich arbeite mit einem AT89C51SND1 - der hat das MMC Interface schon in
der Hardware integriert.

Ich möchte nun als erstes das OCR Register der MMC Karte auslesen.
Also sende ich über die Commandline das Kommando 1 (0100 0001) und im
Anschluss 4 Bytes (das Argument OCR). Was ich im Argument mitschicken
muss, weiß ich nicht sicher. Ich bin davon ausgegangen, dass ich hier
die Bits setzen muss, mit der Betriebsspannung die Karte arbeiten
können muss. Also habe ich für 3,3V Bit 20 und 21 gesetzt - den Rest
leer gelassen.

Ich schreibe also 0x41, 0x00, 0x30, 0x00, 0x00 in den FIFO rein.
Dann aktiviere ich die Response (RESPEN set und anschließend clear) und
setze RFMT um die kurze (48 bit) Response zu aktivieren. Anschließend
starte ich den Transfer.

Es wird ein Interrupt aufgerufen. Hier checke ich nun, welches Flag den
Interrupt ausgelöst hat (bei mir End of Response). Das trifft auch zu.
Anschließend überprüfe ich, ob die Länge der erwarteten Antwort
gestimmt hat (RESPFS = 1) und ob die CRC richtig war (CRC7S = 1) im
MMSTA - Statusregister. Leider sind genau diese beiden Bits 0. Genau
so, wie wenn ich keine MMC Karte eingesteckt hätte.

Was hab ich jetzt übersehen? Hab ich vielleicht einen Denkfehler?

Vielen Dank für Eure Mühe!!

Liebe Grüße
Steffen

von Steffen (Gast)


Lesenswert?

Hat denn wirklich keiner eine Idee? Oder weiß, wie eine MMC Karte
initialisiert werden muss?

Warum antwortet die Karte bei CMD1 nicht?

Viele Grüße
Steffen

von Steffen (Gast)


Lesenswert?

Ist es möglich, dass die Karte vorher eine bestimmte Anzahl an Takten
auf der CLK Line braucht, bevor ich sie mit Kommandos ansprechen darf?

Viele Grüße
Steffen

von Olaf (Gast)


Lesenswert?

Aus dem Gedachtnis, es ist jetzt etwas ein Jahr her das ich das gemacht
habe, muss ich dir zustimmen. Ich glaube du musst sicherstellen das ihr
Schieberegister leer ist.

Aber wieso liesst du nicht das Datenblatt. Da steht alles drin.

Olaf

von Steffen (Gast)


Lesenswert?

Hallo Olaf!
Danke für Deine Antwort!

Ich habe das Datenblatt von einer Hitachi MMC Karte gelesen:

http://www.ulrichradig.de/site/atmel/avr_mmcsd/pdf/hitachi_hb28b128mm2.pdf

Leider konnte ich hier nichts dementsprechendes finden. Ich hab es
eigentlich recht sorgfältig durchgelesen.

Hast du ein anderes Datenblatt, wo das evtl. genauer drin steht?

Viele Grüße
Steffen

von Jörn G. aus H. (Gast)


Lesenswert?

Für solche Fragen bei sandisk.com einfach auf OEM klicken:

Ausführliches Datasheet:
http://www.sandisk.com/pdf/oem/manual-rs-mmcv1.0.pdf

Und eine FAQ:
http://www.sandisk.com/pdf/oem/AppNoteMMCQAv1.0.pdf

jörn

von Olaf (Gast)


Lesenswert?

Also ich hab alles nach einem Datenblatt von Hitachi programmiert. Ich
hatte auch noch ein anderes (Samsung?) das war aber eine ziemlich
identische Kopie von Hitachi.

Eigentlich hatte ich nur ein einziges Problem. Irgendwo im Datenblatt
steht das die Karten sich mit der Antwort (R1) zeit lassen koennen wenn
sie wollen und erstmal ein paar Leerbytes raustakten. Das ist bei den
Karten von Hitachi nie vorgekommen. Dafuer aber dann spaeter bei einer
anderen Karte (Infineon oder Sandisk). Da faellt man schnell auf die
Schnauze weil man beim programmieren daran denken sollte. :-)

Ausserdem gibt es irgendwo eine Applikation wo zwei Transistoren als
PEgelwandler, oder gar nur ein paar Widerstaende, genutzt werden. Das
funktioniert solange die Karte auf derselben Platine neben dem
Microcontroller ist. Sind da aber erstmal 30cm Flachbandkabel zwischen
dann sollte das vernuenftig terminiert sein, ordentliche Bustreiber,
jede zweite Ader im Kabel Masse. Sonst wird das naemlich
unzuverlaessig.

Olaf

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.