mikrocontroller.net

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


Autor: Günter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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/

Autor: Günter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Günter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank Götze (embedded-os)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 !

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Marcel Reinhardt (reiiniheini)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marcel Reinhardt (reiiniheini)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.