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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.