STM32: SD-Card mit SDIO

OP Persönliche Seite #1722257
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
(Firma: EleLa - www.elela.de) #1722332
Lesenswert?

Das hier?
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html#chanfat_stm32

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.
Gast #1722510
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")?
OP Persönliche Seite #1722528
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
Gast #1722560
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ß
#1722575
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.
OP Persönliche Seite #1722759
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
#3423801
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
Angehängte Dateien:
Gast #3468917
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
Gast #3485970
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
Gast #3487503
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

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