STM32 - SD Karte im SPI Modus - Ncr Dauer

OP #6462252
Lesenswert?

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
Angehängte Dateien:
#6462299
Lesenswert?

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.
#6462307
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren