Forum: Mikrocontroller und Digitale Elektronik Im MMC Card Response Byte sind die Bits verschoben


von Günter (Gast)


Lesenswert?

Hallo,
ich bin einer der vielen, die Probleme haben, eine MMC Card richtig zu 
beschreiben. Komischerweise funktioniert die Initialisierung im SPI Mode 
richtig. Um einen Sektor auszulesen, sende ich Komando 17 und warte auf 
Response = 0 (kommt auch).
Allerdings, wenn ich dann auf das Startbyte 0xfe warte, wird dieses um 
ein Bit nach links versetzt ausgegeben. Danach hat des den Anschein, 
dass die Daten folgen. Das kann ich aber nicht mit gewissheit sagen.
Für Tipps zur Behebung meines Problems wäre ich sehr dankbar!
MfG
Günter

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Allerdings, wenn ich dann auf das Startbyte 0xfe warte,
> wird dieses um ein Bit nach links versetzt ausgegeben.
SPI-Mode mit CPOL und CPHA richtig eingestellt?
Scheinbar wird zum falschen Zeitpunkt gelatcht.
Siehe dazu auch http://www.totalphase.com/support/kb/10045/

von Günter (Gast)


Lesenswert?

Danke Lothar!
Mit der CLK Polarität habe ich schon rumprobiert. Die ist richtig 
eingestellt.(senden = fallende Flanke/ empfangen = steigende Flanke) Die 
Karte ließ sich bei falscher CLK Polarität nicht initiallisieren.
Ich habe gerade herausgefunden, dass das Response vom Kommande 17 um 
1Bit versetzt ist. Kann vielleicht sein, dass die Karte nicht richtig 
synchronisiert ist? Wonach richtet sich das?
MfG Günter

von holger (Gast)


Lesenswert?

>Kann vielleicht sein, dass die Karte nicht richtig
>synchronisiert ist? Wonach richtet sich das?

Nach deiner CS Leitung. SPI Mode 0 klappt bei meinen
Karten immer.

von Günter (Gast)


Lesenswert?

Neue Erkenntnis!!!
MMC Karten von Kingston scheinen zu funktionieren. Ich hab es mal mit 
einer 128MB und einer 1GB probiert. Die sollten doch genormt sein. Hat 
Vielleicht einer auch schon solche Erfahrungen gemacht?
MfG Günter

von Frank G. (embedded-os)


Lesenswert?

Ich habe den selben shift bei älteren MMC-cards erleben dürfen.
siehe "Korrektur-shift" in:

http://www.embedded-os.de/index.html?pcfat_port.htm

von Klaus (Gast)


Lesenswert?

Hi Also ich sitze genau an dem selben Problem !!!
Habe hier 2 SDKarten (2GB) (Transcend,Scan Disk), die Initialisierung 
scheint zu gehen bis das ich auf Data Token von 0xFE(Single Block Read) 
immer nur 0xFC(Multible Block Write) bekomme.

Hat Jemand eine Lösung parat? Habe leider nichts zu "Korrektur-shift" 
gefunden.

Besten Dank im vorraus

von Olaf (Gast)


Lesenswert?

> Hat Jemand eine Lösung parat?

Das Timing des SPI stimmt nicht. Es kommen immer zwei Flanken
gleichzeitig die es laut MMC/SD Standard nicht sollen.
Keiner der vier SPI Modes ist perfekt geeignet. Ob es dann
in der Praxis geht haengt von der Karte, vom Pegelwandler
und der Wetterlage ab.
Ich glaub Elmchan hat das ganze auf seiner Homepage irgendwo
ausfuehrlicher erklaert.

Olaf

von Klaus (Gast)


Lesenswert?

Hmm ok, also mal ne andere Karte(n) besorgen??

Gibts irgend einen Hersteller bei dem es immer geht? Ist aber schon 
irgendwie komisch ??
Wie meinst du das "es kommen immer 2 Flanken gleichzeitig" Müsste ich 
dann nicht schon das Problem vorher irgendwie kriegen ??

Besten Dank für die schnelle Antwort.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Das Timing des SPI stimmt nicht. Es kommen immer zwei Flanken
>gleichzeitig die es laut MMC/SD Standard nicht sollen.
>Keiner der vier SPI Modes ist perfekt geeignet.

Was ist denn das für ein Ammenmärchen? Alle meine Karten (mittlerweile 
10 von verschiedenen Herstellern) laufen mit Hardware-SPI und vollen 
25Mhz Bustakt an einem XMega. Dieses SPI unterscheidet sich nicht von 
dem der ATMegas. Schon mal daran gedacht, die Karten mit <400kHz zu 
initialisieren und erst nach erfolgter kompletter Init den Bustakt zu 
erhöhen? PullUp am Datenausgang der Karte?

von holger (Gast)


Lesenswert?

>Schon mal daran gedacht, die Karten mit <400kHz zu
>initialisieren und erst nach erfolgter kompletter Init den Bustakt zu
>erhöhen?

Wenn man Widerstände als Pegelwandler nimmt passt
das dann auch zu dem Problem ;)

von Klaus (Gast)


Lesenswert?

OK also Prpblem behoben !!!

Kurz vor dem Aufgeben bzw. beim Aufgeben. Nachdem ich mal meinen 
"DigiView Logic Analyzer" entfernt habe um diesen gegen die Wand zu 
schmeißen ;-) ging auf einmal alles !! Muss doch nicht so Hochohmig sein 
wie gedacht oder irgend ein anderer Grund.

Trotzdem Danke für eure Hilfe !

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Das waren sicher Leitungskapazitäten. Bei ordentlichen Pegeln zur und 
von der Karte sollte dies aber nicht stören. Wie hast Du Deine Karte an 
das SPI angeschlossen?

von Marcel R. (reiiniheini)


Lesenswert?

Hi Leuts,

ist ziemlich interessant zu lesen was bisher geschah...

Ich für meinen Teil hänge so ziemlich an der gleichen Stelle bei der 
Benutzung von FATfs. Ini geht, sogar OCR-auslesen bringt plausible 
Ergebnisse.
Aber sobald ich mit CMD17 einen Block anfordere kommt nur Müll.
Deshalb bekomme ich die FAT-Tabelle nicht initialisiert.
Mit NTDISKVIEWER habe ich nachgeschaut. Die FAT steht genau da wo sie 
hin muss.

Beim Versuch das mit nem Oszi zu debuggen wird es nur noch schlimmer...
(da geht die Initialisierung der Karte nicht einmal)

Habt ihr nen Vorschlag was für einen Pegelwandler ich einsetzen kann?

Gruß
reini

von Uwe (Gast)


Lesenswert?

Hi!
Das selbe Problem hatte ich am Anfang auch, bis ich auf aktive 
Pegelwandler umgestiegen bin. Die Ausgänge mancher Karten sind sehr 
hochohmig und können manchmal die AVR-Eingänge nicht schnell genug auf 
Pegel bringen. (Belastung durch C's)
Das gillt besonders bei 3,3/5V Systemen. Ich habe einfach 2 SMD 
Transistoren genommen und gut wars.

Viel Erfolg, Uwe

von Marcel R. (reiiniheini)


Lesenswert?

Hi Uwe,

mit zwei Transistoren....????
Da würd mich mal die Schaltung interessieren.
Mir fällt da spontan nur eine Gegenztaktstufe ein, die dann allerdings 
die Daten invertiert.
Oder hast du es mit jeweils einem Widerstand ergänzt? Wenn ja, welchen 
Wert hast du denn da genommen?

Gruß
Reini

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.