Forum: Mikrocontroller und Digitale Elektronik STMF4 und FMC kann nur Zugriff mit uint32_t?


von lars (Gast)


Lesenswert?

Das STM32F429-Discovery-Board besitzt einen 4Mx16 SDRAM-Baustein. Das 
FMC-Beispiel greift darauf mittels uint32_t zu:
1
*(__IO uint32_t*) (SDRAM_BANK_ADDR + 4*index) = x;
2
y = *(__IO uint32_t*) (SDRAM_BANK_ADDR + 4*index);

Wenn ich nur mit uint16_t und 2* zugreife, funktioniert das Ganze bei 
mir nicht (es werden nur Nullen gelesen).

Wieso ist der Zugriff nur mit uint32_t korrekt, obwohl der Datenbus 16 
Bit breit ist? Läßt sich das umkonfigurieren (habe es einen Tag lang 
erfolglos versucht)?

von pegel (Gast)


Lesenswert?

#define SDRAM_BANK_ADDR  ((uint32_t)0xD0000000)

Du bewegst dich trotzdem im 32bit Adressraum des µC.

von pegel (Gast)


Lesenswert?

Hast Recht, müsste gehen.

Mit FSMC auf 16bit Daten für statischen Speicher eingestellt,
habe ich das so gemacht:

#define MEM_ADDR_DATA    ((uint32_t)0x60020000)

uint16_t x,y;

    *(uint16_t volatile*)(MEM_ADDR_DATA) = x;

    y = (*(uint16_t volatile*)(MEM_ADDR_DATA));

von lars (Gast)


Lesenswert?

Ich ziehe meine Frage zurück, es funktioniert momentan mit gar keinem 
Datentyp!

von STM Apprentice (Gast)


Lesenswert?

lars schrieb:
> Ich ziehe meine Frage zurück, es funktioniert momentan mit gar keinem
> Datentyp!

Hast du denn den SDRAM Controller in deinem Beispiel auch
initialisiert? Oder bist du der guten Hoffnung dass es
"einfach so" funktioniert?

von pegel (Gast)


Lesenswert?

HAL oder StdLib oder blank?

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
Noch kein Account? Hier anmelden.