Hallo!
Wir machen gerade ein Projekt, indem wir eine MMC als Speicher verwenden möchten. Dazu haben wir uns die Spezifikation von SanDisk
Was wir bis jetzt erreicht haben: Wir können die Karte initialisieren (Kommando 0). Wir warten, bis die Karte im Idle Zustand ist (bis Kommando 1 den Wert 0 liefert). Wir können eigentlich alle Befehle anwenden, bis auf Lesen und Schreiben eines Sektors.
Problem: Beim Lesen und Schreiben eines Sektors haben wir arge Probleme. Wir haben einen Logikanalyser zur Verfügung und haben uns da das Timing angeschaut. Beim Einlesen und Schreiben, scheint die Karte in einen anderen Zustand zu gehen. Die Daten sind normalerweise byte-aligned, d.h. wenn wir 8 Takte rausschreiben, bekommen wir beim ersten Takt das MSB und beim letzten das LSB. Beim Ein- und Auslesen kommt uns aber vor, ist die Karte nicht mehr byte-aligned. Schreiben eines Sektors geht (per Kartenleser nachgeprüft), die Statusantwort ist dann aber falsch. Gelesen wird irgendwie Blödsinn (aber ungefähr 512 Byte Blödsinn...). Dieser Blödsinn kann man interpretieren wie man will (durch bitweise verschieben), es sind nicht die geforderten Daten. Im Groben haben wir uns an
Sollten wir hier nicht alle nötigen Daten zur Verfügung gestellt haben, bitte Nachfragen. Mittlerweile glauben wir, dass die phsyikalische Verbindung zur MMC nicht richtig ist. Hier haben wir einen 5 Volt AVR, eine
3.3 Volt Versorgung für MMC und die Signale von AVR zur MMC sind per Spannungsteiler heruntergeteilt. Im Oszi sind die Signale schön steilflankig und ohne Überschwinger.
Wer hat schon MMC per SPI angesprochen? Was könnten wir falsch gemacht haben? Wir sind für jeden Hinweis sehr Dankbar!
Bis bald Günther Jehle, Anton Zöchbauer, Siegfried Brandstätter, Walter Duda und Christian Zillner