www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32: SD-Card mit SDIO


Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche gerade mit meinem STM32F103RE mittels SDIO auf eine 
SD-Karte zuzugreifen.

Dazu nutze ich erstmal das mit der Firmware mitgelieferte Beispiel. Das 
funktioniert auch gut mit verschiedenen SD-Karten. (SD_Init gibt SD_OK 
zurück).

Teste ich das gleiche mit einer microSDHC-Karte*, die über einen Adapter 
im SD-Slot steckt, so bekomme ich nur ein Timeout.


Woran kann das liegen?

Oder, was gar noch besser wäre: hat jemand ein übersichtliches Beispiel? 
Ich finde das aus der fwlib ein bisschen unübersichtlich und finde im 
Netz nur Beispiele für den SPI-Mode..


Gruß
Lasse

PS: Sollte ich was vergessen haben, bitte Bescheid sagen, wird dann 
nachgereicht :)

*Transflash, 4GB von Reichelt

Autor: Markus Müller (mmvisual)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hier?
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm...

Ich selbst habe es noch nicht benutzt, weiß auch nicht ob dieser Code 
SPI oder SDIO nutzt.

So viel ich weiß gibt es einige Unterschiede zwischen dem SD und SDHC 
Standard. (Unabhängig von der Kartenbauform). Das Timing soll anders 
sein und es gibt sich ein paar Befehle mehr.
Ein gutes Dokument hab ich bisher noch nicht gefunden.

Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mthomas nutzt leider auch nur SPI und verweist für SDIO auf das 
fwlib-Beispiel :(

Autor: Martin Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timing bei SDHC-Card ist nicht so sehr anders im Vergleich zu SD-Card 
und MMC. Initialisierung von Adressberechnung bei read/write-Block(s) 
jedoch schon.
Ich habe bisher kein Board mit STM32 und SDIO-Anschluss, daher gibt es 
kein Beispiel für SDIO von mir und nur den Verweis auf die SDIO-Beispiel 
in der StdPerLib.
Ansätze zur Fehlersuche: Mit Original Eval.-Board von ST identischer 
Anschluss der Karte (inkl. CS) und Quarz? SDIO-Takt in Ordnung (evtl. zu 
schnell bei der Initialisierung)? Testweise Pullups in die 
Datenleitungen Kartenslot-STM32. Bis zu welchem Punkt läuft SD_init 
(Debugger oder "printf-Duftmarken")?

Autor: Escamoteur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf jeden Fall mal noch mit der Karte eines anderen Herstellers testen, 
ich hatte bei SD-Karten da schon lustige Ergebnisse :-(

Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für die Antworten,

ich hab leider kein Original-ST-Board, werd das mit den Pullups aber mal 
ausprobieren.

An der Software (zu schneller Takt) dürfte es ja eigentlich nicht 
liegen, immerhin ist das ja das fertige Beispiel von ST, oder?

@escamoteur:
Das wäre aber arg doof, ich dachte, dass gerade dass (und die 
Geschwindigkeit) das tolle an der SDIO-Schnittstelle ist: Das eben alle 
SD-Karten (mit entsprechender Software) funktionieren. Wenn nicht: Wie 
machen dass dann die Kamera- und PC-Hersteller? Ich kann ja schlecht auf 
mein Gerät draufschreiben "Funktioniert mit einigen SD-Karten" ;)

Gruß
Lasse

Autor: TuningFork (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also mit SDIO kenne ich mich nicht aus, aber über SPI gibt es 
Unterschiede zwischen SD und SDHC bei der Inititialisierung und dem 
Zugriff auf den Speicher. Eine Sonderrolle nehmen dabei SD-Karten mit 
2GB ein (sollte man vermeiden). Die Karten enthalten in entsprechenden 
Registern bzw. Blöcken(siehe SD-Spec) die notwendigen Infos und 
entsprechende Zustands- und Flußdiagramme für eine typabhängige 
Intialisierung gibt es in den Specs. Die freien Specs findet man im Netz 
oder bei der SD-Association. Komplette erforden eine Mitgliedschaft in 
eben diese Association.

Gruß

Autor: Markus Müller (mmvisual)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Grundfunktionen, Lesen, Schreiben, Adresse setzene sollten alle 
können. Dann gibt es noch Zusatzfunktionen, Security, Herstellerinfos 
usw. da muss man erst prüfen ob der Befehl unterstützt wird. Wenn nicht 
eventuell andere Befehle verwenden.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hinlänglich bekannt ist, dass SDHC Karten in den älteren SD-Slots ohne 
ausdrücklichem SDHC-Support nicht funktionieren. Ob das nur die Treiber 
sind, oder auch die Interface-Hardware Unterschiede aufweist, weiss ich 
nicht. Aber was auf die PCs zutrifft, das trifft natürlich auch für 
Controller zu. Software, die nur SD kennt, kann mit SDHC nichts 
anfangen.

Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

der STM32 hat laut Datenblatt SDHC-Support:

"The SDIO Card Specification Version 2.0 is also supported"

und sollte somit funktionieren, zumal im fwlib-Beispiel auch was von 
HighCapacity steht.

Ich werde jetzt mal Pullups einbauen und dann gucken, wo der Timeout 
auftritt.


edit: Die Pullups ändern leider nichts an der Sache, das Timeout kommt 
nach CMD8 (SEND_IF_COND). Ich hoffe, ihr könnt dabei helfen ;)

Gruß
Lasse

Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um es für die Nachwelt festzuhalten: Das Problem lag am Olimexboard, das 
auf zwei Pins weitere Features hatte, die die SDIO-Sache stören.

Kappt man den LED_E Jumper und entlötet man R27, so läuft es wunderbarst 
:)

Gruß
Lasse

Autor: Thomas Frenzel (tf0815)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Lasse S. schrieb:
> Um es für die Nachwelt festzuhalten: Das Problem lag am Olimexboard, das
> auf zwei Pins weitere Features hatte, die die SDIO-Sache stören.
>
> Kappt man den LED_E Jumper und entlötet man R27, so läuft es wunderbarst
> :)
>
> Gruß
> Lasse

Hallo Lasse,

Um welches OLIMEX-Board handelt es sich?
Ich nutze ein STM32-LCD "Development board for STM32F103ZE and 3.2" 
color LCD with touchscreen".
Dieses Board hat einen Steckplatz für (mini-)SD-Karten. Mit der 
mitgelieferten Software (sdcard.c, sdcard.h) kann ich die Karte 
initialisieren, aber nicht Lesen/Schreiben. Der Versuch wird immer mit 
einem TimeOut abgebrochen.
Danke für´s Lesen ...
Thomas

Autor: Pieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
auf ein frohes Neues....

...muß mich mal hier einklinken.
Ich benutzt ein Olimex-E407 Board mit STM32F407 und habe dafür einen 
kleinen SDIO-Treiber von C nach Pascal umgeschrieben. Geht soweit auch 
ganz gut. Lese- und Schreibgeschindigkeit scheint von der SD-Card 
abzuhängen.
Beim lesen komme ich bis auf 4,8MByte/s, beim schreiben nur auf 
220kByte/s.
Liegt es am verwendeten SingleBlockModus oder hat wer schon selbige 
Erfahrung gemacht?

Mit Gruß
Pieter

Autor: Martin Beuttenmüller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Thomas Frenzel:

(Die Rückfrage kommt etwas spät - bin gerade erst über diesen Tread
gestolpert.)

Im angefügten Bild hat der µ-SD-Connector einen WP-Schalter integriert.
"HW-Writeprotection" kenne ich so nur von ("normalen") SD-Karten,
bei µSD hab' ich das noch nie gesehen.

Entweder ist das Schaltbild oder aber die Beschriftung unrichtig.
Alternative: ich selbst liege voll daneben ...

Grüße von der Spree
Martin

Autor: W.S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Hinlänglich bekannt ist, dass SDHC Karten in den älteren SD-Slots ohne
> ausdrücklichem SDHC-Support nicht funktionieren. Ob das nur die Treiber
> sind, oder auch die Interface-Hardware Unterschiede aufweist, weiss ich
> nicht.

Es ist ein REINES Treiberproblem. Die daten werden bei SD in Bytes 
adressiert und bei SDHC in Blöcken zu 512 Bytes. Abgesehen davon 
verstehen SD Karten einige wenige SDHC-Kommandos nicht, die aber NUR 
beim Initialisieren gebraucht werden, um herauszufinden, ob es ne SD, 
SDIO oder SDHC Karte ist.

Ich hatte doch hier vor Monaten schon mal meinen SDIO-Treiber gepostet, 
der übrigens sowohl auf STM32F103 als auch auf LPC2478 läuft. Die 
SDIO-Cores beider µC sind weitestgehend gleich.

W.S.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.