STMF4 und FMC kann nur Zugriff mit uint32_t?

Gast #5258079
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)?
Gast #5258250
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));

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