Hallo, ich bin auf der Suche nach einer microSD-Karte die man im SPI-Modus betreiben kann. Mit meiner Testschaltung/Code funktionieren diverse normale SD-Karten und auch eine 128mb noname microSD (mittels Adapter für den Slot) die bei meinem Nokia Handy dabei war. Leider ist das kostbare Stück die einzige microSD, die tut. Ich habe z.B. hier noch eine neu gekaufte von SanDisk (1GB), die lässt sich einfach nicht initialisieren. Ein Mitarbeiter eines anderen Herstellers meinte auf Anfrage: "Konsumer-Karten, zu denen auch alle micro-SD Karten gehören, sind einem kurzen Produktionszyklus unterworfen, so dass sich das Innenleben häufiger ändern kann, was sich vor allem im SPI Modus bemerkbar machen kann." Meine Fragen: - Muss ich microSDs anders behandeln / mache ich was falsch? - Wo bekomme ich Karten mit SPI Unterstützung her? Ich habe mal gegoogelt, es gibt ein paar unbekannte Hersteller, die geben das explizit mit an, aber die sind hierzulande nicht oder nur schlecht erhältlich.
hallo ich habe gerade eben SD Karten verwendung meinem controller beigebracht... auch SPI modus... Dies funktioniert bei mir mit allen Karten, Normale SD, mini SD micro sd mit und ohne adapter egal.. habe etwa 10 verschiedene getestet... es müsste also an deinem code etwas nicht stimmen... zeig den doch mal her... also die intitialisierung etc
Die meisten Karten bis 2GB ohne SDHC sollten gehen. Habe mehrere 1GB und 2GB Kingston Micro-SDs hier, die keine Probleme am Atmega machen. Eventuell solltest Du Deinen Code nochmal prüfen. Vielleicht entspricht die Initialisierung der Karte nicht ganz den Spezifikationen.
ich habe auch 8GB SDHC und 16GB micro SD SDHC karten verwendet... lief alles problemlos
Vielen Dank für die Antworten. Ich habe mich am Code von Martin Thomas in seinem Beispielprojekt für das FatFS Modul orientiert. Ich habe die relevanten Codeteile angehängt, vielen Dank an diejenigen, die mal kurz drübergucken möchten. Wie gesagt, der Code tut mit normalen SDs und auch einer einzigen microSD, was aber nicht heißen soll, dass er völlig korrekt ist.
Du solltest dir von http://www.sdcard.org/developers/tech/sdcard/pls die offzielle Spezifikation für SD-Karten herunterladen. Auf S.95 ist der Ablauf der Initialisierung im SPI-Modus dargestellt. Dort siehst du, daß in deiner Init Routine ein paar Schritte fehlen. Du solltest z.B. zwischen Karten nach Spezifikation 1.0 und 2.0 unterscheiden beim Initialisieren. Ebenso gibt es dann eine Unterscheidung zwischen SD und SDHC. Ich habe vor kurzem eine eigene Init Routine geschrieben, welche sich genau an diesen Ablauf hält und ich kann damit bisher erfolgreich diverse µSD Karten betreiben. Darunter sind 64MB, 512MB, 1GB, 2GB, 4GB, 8GB Karten mit Spec v1 und v2 sowie SD und SDHC. Ich weis zwar nicht, ob diese fehlenden Zwischenschritte die Ursache deines Problems sind, aber schdaden kanns nicht. Der Vorteil davon ist auch, daß du nach dem Initialisieren genau weist, um welchen Typ von Karte es sich handelt. :) Ciao, Rainer
Oliver Behr schrieb: >... > Ich habe mich am Code von Martin Thomas > in seinem Beispielprojekt für das FatFS Modul orientiert. orientiert...aber dabei auch einiges über Bord geworfen und die Initialisierung doch arg umgebaut. Wie von "Fox Mulder" angemerkt, gilt es einiges zu beachten. Der unsprüngliche Code von ChaN - seine Initilisierungsroutine habe ich w.r.e. nicht verändert - tut dies auch. Mein derzeitiger Stand STM32 + SD-Card per SPI + ChaNs FAT-Code findet sich unter: http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/index_cortex.html#stm32_dpf -> Download -> darin project/Libraries/fat_sd/sd_spi_stm32.c Mglw. auch hilfreich: Karte SO/STM32 MISO mit Pull-Up versehen (extern oder zumindest internen aktivieren). Sicherstellen, dass Card-Select richtig funktioniert (Init., select (LOW) und de-select(HIGH))
@Fox Mulder: Vielen Dank für den Hinweis mit der SD-Spec. Hatte gar nicht gewusst, dass die (zumindest eingeschränkt) erhältlich ist. Arbeite das gerade durch. @Martin Thomas: Zwischenzeitlich habe ich auch deinen Code mehr oder weniger 1:1 versucht und damit erfolgreich diverse Karten initialisiert. Es lag tatsächlich daran, dass einige meiner Karten bereits v2 waren (obgleich nicht SDHC), was ich ja nicht behandelt habe. Mittlerweile durchschaue ich auch deinen Code inkl CMD-Argumente etc. Was mir noch nicht klar ist, ich habe das in der SD-Spec auch noch nicht gefunden: Warum machst du vor jedem Command ein Deselect Select Wait Ready? Muss man die Karte wirklich jedes mal neu anwählen, genügt es nicht sie nach der Inititialisierung CS ständig auf 0 (selected) zu haben?
-> Fox Mulder Rainer, wärst Du bereit die Lib zu veröffentlichen? -> Oliver Behr Viele Karten sind auch ekelig formatiert, sodaß die FAT information nicht immer sauber erkennbar sind. Verwende den Panasonic SDFormatter, einige Karten habe ich erst durch diesen Formatter mit dem AVR lesen können, obwohl auch zuvor Windows keine Probleme damit hatte.
Igor Ebner schrieb: > Rainer, wärst Du bereit die Lib zu veröffentlichen? Kein Problem. Mein sämtlicher Code den ich für meine Mikrocontroller programmiere ist seit kurzem sowieso auf meinem SVN Server öffentlich verfügbar. Du kannst unter [1] das Repository ansehen und Dateien herunterladen. Im Speziellen sind im Verzeichnis "Library" alle meine bisher erstellten Bibliotheken die ich für diverse Hardware oder Software Funktionen benutze verfügbar. Änderungen die ich an meinen Dateien vornehme sind also auch dort gleich zu finden. Dort sind auch sehr viele Test Projekte von mir mit welchen ich Sachen ausprobiert hatte. Also bitte nicht lachen, was dort alles für Zeugs herumliegt. ;) Bei Fragen dazu am besten eine pm an mich. Ciao, Rainer [1] https://quakeman.homelinux.net/viewvc/trunk/
Fox Mulder schrieb: > [1] https://quakeman.homelinux.net/viewvc/trunk/ Das ist nicht ganz korrekt. Die richtige URL zum anzeigen per ViewVC lautet https://quakeman.homelinux.net/viewvc/uVision/trunk/ Und die URL des SVN Repository zum auschecken lautet https://quakeman.homelinux.net/svn/uVision/trunk/
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.