Hallo, ich versuche mit meinem STM32F103 via SPI auf eine Fat formatierte SD-Karte zu schreiben, dabei möchte ich aber vor allem keine vorgeferigten Bibliotheken verwenden. Nun bin ich auf eine sehr hilfreiche Seite gestoßen: https://www.kampis-elektroecke.de/2018/11/avr-mit-einer-sd-karte-erweitern-teil-1/ Dort ist auch ein Bild mit bei (befindet sich ebenfalls im Anhang), das zeigt, wie die Befehlsübertragung via SPI an die SD-Karte aufgebaut ist. Dort steht, dass es zwischen dem übermitteln des Befehls und dem erhalten einer Antwort der SD-Karte, eine sogenannte Ncr Zeit gibt, in der die SD Karte arbeitet. Leider steht auf dieser Seite, dass das zwischen 0 und 8bytes für SD Karten dauern kann und ich währendessen immer 0xFF übermitteln soll. Leider finde ich nichts dazu wovon, die Länge des Ncr Zeitraums abhängig ist. Ich habe nämlich die Sorge, die Antwort der SD Karte zu verpassen, wenn ich einfach immer 8mal 0xFF übertrage und die Ncr Dauer, aber beispielsweise nur 3bytes beträgt. Wenn ihr also wisst, ob die benötigte Zeit vom Befehl, SD-Karte oder ähnlichem abhängt oder ihr eine ganz andere Idee habt, würde ich mich sehr über eure Antworten freuen. Beste Grüße Nils
Nach jedem geschriebenen 0xFF muss geprüft werden, was zurückgelesen wurde. Konkret ist das MSB interessant. ist das MSB noch '1', dann musst du noch einmal 0xFF schreiben, ist es '0', dann hast du den Response empfangen. Das kann bereits beim ersten Versuch der Fall sein, oder erst beim neunten.
:
Bearbeitet durch User
Ich hab' das vor langer Zeit mal gemacht (SD Karte im SPI Modus); kann sein, dass mein Gedächtnis schwächelt... Grundsätzlich ist SPI ja bidirektional: Mit jedem SCLK Puls wird ein Bit auf MOSI in Richtung Device und gleichzeitig ein Bit über MISO vom Device zum Host geshiftet. Du kannst also nach dem Schicken eines jeden "Wartebytes" prüfen, ob von der Karte was zurück kam. Wenn != xFF, dann hast Du lange genug gewartet.
> dass das zwischen 0 und 8bytes für SD Karten dauern kann
das kann nach Schreibbefehlen auch mal deutlich länger dauern
(4-Stellig)
Immer nach jedem Byte die Antwort auswerten!
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.