STM32F4discovery und SD-Card

Gast #2844933
Lesenswert?

Dort habe ich nur Implementierungen für stm32f10x gefunden.
Beim Umbau für den STM32F4 komme ich vom Hundertsten ins Tausendste...
z.B.:
      error: 'DMA2_FLAG_TC4' undeclared (first use in this function)
      error: 'DMA2_FLAG_TE4' undeclared (first use in this function)
      error: 'DMA2_FLAG_HT4' undeclared (first use in this function)
      error: 'DMA2_FLAG_GL4' undeclared (first use in this function)
usw.....
Da werden die Umbauarbeiten wohl sehr umfangreich.
#2845918
Lesenswert?

Habe SDIO am discovery F4 am laufen. Mit polling und DMA, 1 bit und 4 
bit.

Habe die standard ST samples leicht modifiziert damit sie unter CooCox 
laufen. Ich habe auch mit einer nativen Implementierung aus einem GIT im 
Netz herumgespielt. Die benötigt ganz wenig Platz, was beim f4 ja 
relativ unwichtig ist.

Kann dir ein CooCox Beispielprojekt zur Verfügung stellen, das die LED 
blinken lässt, das SD root Verzeichnis ausliest und am USART2 ausgibt. 
kein schöner Code, aus meinen ersten gehversuchen halt ...

---

Etwas tückisch ist das DMA, weil Blöcke an geraden Adressen beginnen 
müssen und weil nicht jeder Speicherbereich geht (zb. der freie 64K 
SRAM).

Deshalb habe ich jetzt in der entgültigen Version zwei 512 Byte Buffer 
eingebaut, die abwechselnd geschrieben werden. Und nur dann, wenn der 
DMA nicht direkt funktioniert.
Gast #2846243
Lesenswert?

Hallo Namensvetter,
danke für das Angebot.
stm32f4_discovery_sdio_sd.c funktioniert auch bei mir prächtig.
Da drüber will ich aber das Filesystem von ChaN setzen - und da hapert 
es.
Meine Hardware ist ok, alle SD-low-level-Funktionen klappen, aber keine 
vom Filesystem - wie etwa f_open f_write etc.
f_open liefert z.B. /* (13) There is no valid FAT volume */
Da muss ich noch etwas weiter forschen...ich verwende übrigens auch 
CooCox.
#2846872
Lesenswert?

Ich verwende doch auch das FatFS von ChaN in Version R0.08b.

Die Anbindung im DiskIO habe ich nur rudimentär und einfach gemacht. 
Aber es läuft äußerst stabil und es gehen alle highlevel routinen 
tadellos.

Allerdings verwende ich die nicht direkt, weil ich bestehenden Code 
portiert habe wo die CLIB funktionen (fread, fwrite, fopen) bereits 
verwendet wurden. Aus diesem Grunde habe ich mir einen kleinen Wrapper 
geschrieben, damit ich den anderen Code nicht ändern muss. Der Wrapper 
ist allerdings nicht 100% implementiert, da ich zb. "append" bei fopen 
nicht benutze ...

Wenn ich nach Hause komme, suche ich dir das Zeugs mal zusammen.
Gast #2847205
Lesenswert?

Es wär nett, wenn du mir das mal schicken könntest.
Ich verwende R0.09a von ChaN, habe dort alle Anpassungen an 
stm32f4_discovery_sdio_sd.c gemacht und bekomme nur Schrott bei den 
High-Level-Funktionen raus.
#2850053
Lesenswert?

Das ist schon mal gut. Wenn das Projekt geht (nicht nur die binaries), 
dann scheint deine Toolchain ok zu sein.

Hast du denn die PLL Einstellungen angepasst? Mit den originalen CooCox 
Dateien gehen die von 25MHz Quarz aus. Am Discovery ist aber ein 8MHz 
Quarz drauf. Außerdem ist die SystemInit() nicht aufgerufen worden.
Gast #2850223
Lesenswert?

Hallo,
bei mir funktioniert inzwischen wirklich ALLES!
Im Moment läuft gerade ein Dauertest, bei dem ich eine SD mit Textfiles 
vollschreibe und anschliessend überprüfe. Das geht bisher fehlerfrei.
Den von dir mitgelieferten Wrapper habe ich mal testweise ausgeschaltet.
Es geht auch ohne ihn!?!
Meinen ursprünglichen Fehler habe ich auch gefunden:
FIL *myfile
statt richtig
FIL myfile
Manchmal sieht man den Wald vor lauter Tomaten nicht.
Die CLK-Leitung zur SD-Karte ist übrigens ziemlich empfindlich - mit 
einem Tastkopf dran geht nichts mehr.
Nochmals vielen Dank!

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