Im MMC Card Response Byte sind die Bits verschoben

Gast #1018212
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
Gast
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
Gast
>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.
Gast
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
Gast
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
Gast
> 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
Gast
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.
(Firma: TravelRec.) Persönliche Seite
>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?
Gast
>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 ;)
Gast
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 !
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
Gast
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
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.