Guten Abend, ich habe, dank der Hilfe hier im Forum, eine SD Karte am STM32F407 in Betrieb nehmen können. Bis jetzt läuft alles noch im 1bit Modus. Ich will aber den 4 bit Modus verwenden. Das ganze tut leider nicht. Ich habe das SDIO Modul auf 4 bit umgestellt und die Karte mittels ACMD6. Die Karte liefert keinen Fehler zurück. Leider empfange ich beim Lesen von der Karte nur Müll. Am Ende wird dann das DCRCFAIL: Data block sent/received (CRC check failed) Bit gesetzt. Ich habe bereits die Verbindungen überprüft. Wenn eine Datenleitung nicht angeschlossen ist, dann leifert das SDIO Modul den STBITERR Fehler. Somit gehe ich davon aus, dass die Hardware in Ordnung ist. Die Clock ist gleich wie bei der Initialisierung ~400kHz. Hat jemand eine Ahnung, warum nur falsche Daten gelesen werden? Eine Idee wäre, dass die Datenleitungen vertauscht sind. Das sind sie jedoch nicht. Habe ich mehrfach überprüft. Kann mir jemand einen Tipp geben, auf was man sonst noch achten muss?
Ich habe nun einmal den Speicher der SD Karte mit den gelesenen Daten verglichen (siehe Bild). Es fällt auf, dass sich die Daten irgendwie um ein halbes Byte verschoben haben. Ich habe zuerst gedacht, es läge daran, dass ich das CMD17 (Read Block) sende und dann erst den Read im SDIO konfiguriere. Habe das mal vertauscht. Liefert immernoch das selbe Ergebnis. Hat jemand eine Idee? Eigentlich hat SDIO doch eine Art Präambel mit Startbit usw., oder?
Hallo, ich habe den Lesevorgang nun aufgenommen und die Bilder angehängt. Die Karte sendet tatsächlich die falschen Daten. Das erste Bild zeigt den Lesevorgang im Überblick. Man sieht das CMD17 und im Anschluss die Folge von Daten auf allen 4 Leitungen. Das zweite Bild zeigt das Startbit und das erste Byte das von der SD Karte kommt. Die Karte überträgt immer zuerst die höherwertigen 4 bit. in diesem Fall: Startbit (4 mal 0) und dann 0xF und 0xB. So empfängt der Controller das auch. Aber das ist einfach falsch. Die Daten sollten so aussehen wie im 2. Post gezeigt. Hat jemand irgendeine Idee? So langsam habe ich keine Ahnung mehr, woran es liegen könnte. EDIT: Als Erinnerung: Im 1bit Modus geht alles. Und ich habe auch schon mehrere andere Karten versucht. Alle Karten sind von verschiedenen Herstellern und weisen auch teilweise unterschiedliche Größen auf.
Ich pushe den Thread mal nochmal :) Ich habe nocheinmal einiges an Debugging investiert und kam zu folgendem Ergebnis: nichts... Ich verstehe das ganze nicht. Im 1bit Modus klappt alles soweit. Nur sobald man die Karte auf 4bit umschaltet, spinnen die Daten. Wie gesagt, das Problem tritt bei allen Karten auf, die ich besitze und alle funktionieren am PC oder in anderen Geräten. Da die Karte aber trotzdem falsche Daten sendet muss es ein Konfigurationsfehler sein. Hat jemand eine Idee, was man verkonfiguriert haben könnte, dass die Karte so etwas tut?
Moin, Bei deinen Daten sieht man doch das Problem: FA B8 ... auf der Karte wird als FB 80 gelesen. Dir fehlt also nur das A. Deine Karte sendet also das 1. Low Nibble nicht. bzw zu siehst es nicht. Hast du mal Daten von einer Anderen Startaddresse gelesen? Vllt. ist an der Startadresse für den Lesevorgang etwas faul. Gruß Tec
:
Bearbeitet durch User
Tec N. schrieb: > Bei deinen Daten sieht man doch das Problem: > FA B8 ... auf der Karte wird als FB 80 gelesen. Dir fehlt also nur das > A. > Deine Karte sendet also das 1. Low Nibble nicht. bzw zu siehst es nicht. > > Hast du mal Daten von einer Anderen Startaddresse gelesen? Vllt. ist an > der Startadresse für den Lesevorgang etwas faul. Das habe ich auch bemerkt. Allerdings repariert sich das ganze nach einigen Bytes und die Daten sind korrekt. Das ganze hat irgendwie nichts mit dem SDIO Modul zu tun, da ich mit dem Logicanalyser die Daten exakt gleich sehe. Das Programm ist momentan nicht zur Hand, kann es frühestens heute Abend anhängen. Mich wundert nur, dass das ganze offenbar zu funktionieren scheint. Die Karte sendet auch im 4 bit Modus. Und im 1 bit Modus klappt alles. Das Lesen eines andren Sektors bringt nichts. Habe ich bereits versucht. Das Ergebnis ist immer das gleiche. Ich habe auch mehrere Karten versucht. Da die Kommunikation mit dem Logicanalyzer gleich aussieht, kommt meiner Meinung nach nur ein Fehler in der Konfiguration in Frage. Allerdings habe ich nichts gefunden, was ein solches Verhalten triggern könnte.
M. H. schrieb: > Das Programm ist momentan nicht zur Hand, kann es frühestens heute Abend > anhängen. gibt es inzwischen Fortschritte und vielleicht sogar funktionsfähigen code den du zur Vefügung stellen möchtest? (möchte mein stm-407-sdio in Betrieb nehmen.)
Treiber selbst geschrieben? Die cubemx Variante läuft bei mir mit 24 MHz im 4 Bit Modus gut und das out of the box. Wie sieht deine Hardware aus? Platine geätzt oder Drähte? Ich glaube microchip hat eine gute AN bzgl. Layout und timings.
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.