www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MMC Karten Problem


Autor: Steffen (Gast)
Datum:

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

Autor: Steffen (Gast)
Datum:

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

Autor: Steffen (Gast)
Datum:

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

Autor: Olaf (Gast)
Datum:

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

Autor: Steffen (Gast)
Datum:

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

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

Autor: Jörn G. aus H. (Gast)
Datum:

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

Autor: Olaf (Gast)
Datum:

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

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.