Hallo, wer hat Eerfahrung mit dem Beschreiben von MMC Karten im SPI Mode? Das lesen einzelner Sektoren funktioniert einwandrei. Bei dem Versuch einen Sektor (512B) zu schreiben wird zwar der korrekte Response der Karte ausgewertet aber wenn ich den gleichen Sektor anschließend lese ist dieser nur mit 0 gefüllt. Hat jemand eine Idee? Danke Grüße Dieter
Schaltung? Programmcode? Hatte erst genau dasselbe Problem, bei mir war es ein kleiner Schaltungsfehler in den Pegelwandlern.
Hallo Alex, das ganze ist an U.Radig Beispiel orientiert. Spannungversorgung über Dioden 3,4V. Als "Pegelwandler dienen die Spannungsteiler bzw. DOUT der Karte über eine Transistorschaltung. Die Kommunkation läuft über Portpins des Mega8. Ich habe es auch schon mit der CRC versucht, da in einer Doku von Hitachi steht das die Daten bei falscher CRC nie gespeichert werden. Dies scheint aber auch nicht die Ursache zu sein, zumal die Beispiel im WWW immer ohne die CRC arbeiten. Wie sah Dein Schaltungfehler aus? Danke!
Bei CRC muss wahrscheinlich nicht gesucht werden, im SPI-Modus wird nur bei der Initialisierung eine Pruefsumme benoetigt, spaeter werden nur noch "Dummy-Bytes" statt Pruefsumme gesendet.
Der wird dir nicht helfen, habe einen MAX3378E dafür verwendet. Ein 74LVX125 kann ich dir auch dafür empfehlen. Mich hat die Suche auf jeden Fall mehrere Tage und massig Nerven gekostet :-/
Hi Dieter, nur ne Idee: Sektor wurde nicht komplett geschrieben. Nach den 512 Bytes schreibst du 2 Dummy CRC´s z.b. "FF". Danach empfängst du ein Responsebyte. Es muss XXXXX101 sein, sonst wurden die Daten nicht geschrieben! Klappt bei mir prima, arbeite auch mit 3 Dioden an 5V. Aber um künftig Fehler auszuschliessen werde ich auch einen Festspannungsregler einsetzen, weil Alex hat Recht: die Fehlersuche kann sehr nervig sein ;-) lg Ralf
Danke für Eure Antworten. Bisher konnte ich den Fehler nicht finden. Das von Togger beschriebene Responsebyte werte ich aus und es enspricht auch den Vorgaben. xx101 bedeutet CRC Fehler und Busy. Sollte also stimmen. Wie sieht der Aufbau der Lese und Schreibadresse aus? Der ist doch identisch oder gibt es dort Unterschiede? Braucht die Karte evtl. einen weiteren Befehl um die Daten entgültig abzulegen? Danke! Grüße Dieter
Nein Dieter, XX101 bedeutet, dass die Daten (korrekt) übernommen wurden, dh. es kamen auch 512 Bytes an, weil erst dann wird geschrieben. Die Adresse muß am Sektoranfang beginnen, also 0, 512, 1024, ... Nach dem Responsebyte würde ich empfehlen noch in einer Schleife auf "FF" (not busy) zu warten. Bei manchen Karten geht es auch ohne, ist aber sicherer und könnte auch der Fehler sein. lg Ralf
an Togger, hast du dein code mit IAR ( spi) von msp430? ich brache paar tips. danke
In den Datenblaettern steht das sich direkt an der Karte ein Kondensator von 1uF befinden soll. Viele Karten funktionieren auch wenn man das etwas lockerer sieht. Manche dagegen nicht. Ausserdem kann man bei SPI auch CRC einschalten. Danach schlaeft man deutlich besser. .-) Olaf
WriteProtect - kann man problemlos ignorieren CardDetect - für "mechanisch gefundene Karte"
danke Rolf. ich habe diese Pins nicht angeschlossen. beim senden den ersten block 512 bytes, was bekomme ich als antwort? ein 0101? ist das richtig?
Kommt drauf an. Zunächst sollte 0 zurückkommen und der erste Wert ungleich 0 ist die Antwort der Karte.
halo klaus, schau einfach in : www.ti.com dann aus microcontroller gehen, da sind paar exempel
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.