Forum: Mikrocontroller und Digitale Elektronik MMC in SPI Mode schreiben


von DieterW (Gast)


Lesenswert?

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

von Alex (Gast)


Lesenswert?

Schaltung? Programmcode?

Hatte erst genau dasselbe Problem, bei mir war es ein kleiner
Schaltungsfehler in den Pegelwandlern.

von DieterW (Gast)


Lesenswert?

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!

von mthomas (Gast)


Lesenswert?

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.

von Alex (Gast)


Lesenswert?

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 :-/

von Togger (Gast)


Lesenswert?

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

von DieterW (Gast)


Lesenswert?

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

von Togger (Gast)


Lesenswert?

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

von didi (Gast)


Lesenswert?

an Togger,
hast du dein code mit IAR ( spi) von msp430?
ich brache paar tips.
danke

von Olaf (Gast)


Lesenswert?

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

von didi (Gast)


Lesenswert?

wofür sind die PINS: WP und CD, ?

von Rolf F. (Gast)


Lesenswert?

WriteProtect - kann man problemlos ignorieren
CardDetect - für "mechanisch gefundene Karte"

von didi (Gast)


Lesenswert?

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?

von Rolf F. (Gast)


Lesenswert?

Kommt drauf an. Zunächst sollte 0 zurückkommen und der erste Wert
ungleich 0 ist die Antwort der Karte.

von Hans Klaus (Gast)


Lesenswert?

Kann mir jemand aushelfen mit einer SPI Library in C ?

Danke!

von didi (Gast)


Lesenswert?

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