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
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
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.