Forum: Mikrocontroller und Digitale Elektronik STM32F107 SD Karte über SPI


von Tobias K. (misterlux)


Lesenswert?

Hallo,
ich habe ein Problem beim Versuch von einem STM32F107 auf eine SD Karte 
per SPI zuzugreifen. Im Netz bin ich auf der Seite 
http://elm-chan.org/fsw/ff/00index_e.html auf eine Implementierung für 
ein STM32F100 gestoßen. Ich habe die Software so weit geändert, dass 
SPI2 verwendet wird mit den entsprechenden Pins.

Die Initialisierungsfunktion ist erfolgreich. Der Fehler tritt auf, 
sobald man die Karte formatiert oder mounten will. Beim Formatieren 
erhalte ich bei der Abfrage „GET_SECTOR_COUNT“ eine 2. Wenn ich die 
Karte ohne zu formatieren mounten will, bekomme ich bei der Abfrage des 
„Signature word“ im Boot Sector statt „0xAA55“ ein „0xAB54“.

Diesen Fehler bekomme ich bei mehreren Karten und auch mit mehreren 
Controllern. Die Signale sehen auf dem Oszilloskop gut aus. Um ein 
Fehler beim Auslesen der Register zu vermeiden, habe ich die Signale auf 
den Leitungen kontrolliert. Hier konnte ich den Wert „0xAB54“ 
bestätigen. Die SD Karte habe ich danach auch am PC ausgelesen und dort 
steht der Wert „0xAA55“ im BootSector.

Wo liegt mein Fehler? Gruß Tobias

von Stefan F. (Gast)


Lesenswert?

Ist die Polarität des Taktsignals richtig herum?

von Tobias K. (misterlux)


Angehängte Dateien:

Lesenswert?

Stefanus F. schrieb:
> Ist die Polarität des Taktsignals richtig herum?

Hallo, anbei das Bild zum ersten Kommando beim Initialisieren (CMD0).

von Jim M. (turboj)


Lesenswert?

Tobias K. schrieb:
> Hallo, anbei das Bild zum ersten Kommando beim Initialisieren (CMD0).

Da sieht man verdammt viele Spikes auf dem Signal - da war was nicht 
korrekt am GND angeschlossen.


Was man im Bild leider überhaupt nicht sehen kann: Auf welcher Flanke 
übernimmt der µC die Daten der Karte? IMO gibt es obigen Fehler auch 
wenn Du die Daten an der falschen Flanke übernimmst.

SD Karten formatiert man besser nicht mit einem µC, sondern mit dem 
SD-Formatter. Hat was mit der (für User normalerweise nicht sichtbaren) 
internen Blockausrichtung zu tun.

Eine Analogie wäre das falsche Format (genauer: Partitionierung) von 
WinXP für Platten mit 4k Sektoren - bei SD sind die internen Sektoren 
aber noch viel größer.

von Tobias K. (misterlux)


Lesenswert?

> Was man im Bild leider überhaupt nicht sehen kann: Auf welcher Flanke
> übernimmt der µC die Daten der Karte? IMO gibt es obigen Fehler auch
> wenn Du die Daten an der falschen Flanke übernimmst.

Mit den Flanken war ein guter Hinweis, mit einem anderen SPI Mode gab es 
keine Probleme mehr.

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
Noch kein Account? Hier anmelden.