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
> 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/
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
>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.
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
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
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
> 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
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.
>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?
>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 ;)
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 !
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?
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.