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
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.
mthomas nutzt leider auch nur SPI und verweist für SDIO auf das fwlib-Beispiel :(
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")?
Auf jeden Fall mal noch mit der Karte eines anderen Herstellers testen, ich hatte bei SD-Karten da schon lustige Ergebnisse :-(
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
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ß
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.
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.
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
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
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
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
@ 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
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.
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.