Forum: Mikrocontroller und Digitale Elektronik Fragen STM32F429BI mit Display, SDRam und emWin


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von STM32 Starter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich sitze hier an einem STM32F429BI Board mit Display, SDRam uvm.  Das 
Board ist ein "Überbleibsel" von einem Projekt und ich möchte mich damit 
in die STM32-Welt einarbeiten.
Diverse Sachen funktionieren ganz gut, wie Bit schupsen, Timer, Encoder, 
SPI, usw. Nur die Königsdisziplin TFT und externer SDRam will nicht so.
Mein Ziel ist es mit der emWin Library zu arbeiten, doch schon die 
Initialisierung funzt nicht.
Die Parameter für das Display und den SDRam liegen mir vor und ich meine 
das ich alles im CubeMX richtig eingetragen habe. Ich habe auch schon 
viel rum probiert (über Tage) aber...

Bisher habe ich das Backlight an, und die Backcolor wird angezeigt.
In der emWin Doku habe ich gelesen, dass als erstes GUI_Init() 
ausgeführt wird und diese bei Erfolg eine 0 zurück gibt. Nun ich bekomme 
eine -1.
Im weiteren Programmverlauf, der von cubeMX generieten Code wird noch 
ein "Hello world" abgesetzt. Das aber nicht angezeigt wird.

So der Stand der Dinge.

Meine Fragen:
Wenn ich eine -1 von GUI_Init() zurückbekomme, kann das bedeuten, dass 
TFT und/oder SDRAM falsch initialisiert sind? Oder sind da noch 
Einstellungen am emWin zu machen?
Muss einer der Layer explizit ausgewählt werden bevor da was angezeigt 
wird. Oder ist einer immer aktiv.
GUI Memory Size: Der wird im cubeMX  auf 110 Kbytes gesetzt, was doch 
eigentlich für ein 640x480 mit 16bpp zu wenig ist, oder? Doch wenn ich 
ihn erhöhe, wird das Programm nicht compiliert.
Muss man im TrueStudio den externen Ram eintragen?

Zum SDRam:
Laut Datenblatt vom STM32F429BI ist der Adressbereich vom SDRam Bank 2 
ab 0xd000 0000.
Die Color Framebuffer Start Adress vom Layer0 habe ich dann auf 0xd000 
0000 und den Layer 1 auf 0xd010 0000. Ist das richtig?

Kann man mit TrueStudio eigentlich externen Ram debuggen? Wenn ich in 
dem Adressbereich händisch Werte ändere, sollte sich dann auf dem TFT 
was ändern.

Ja, viele Fragen...
Ich hoffe jemand kann sie beantworten.
Danke fürs lesen und die Antworten!

von Harry L. (mysth)


Bewertung
0 lesenswert
nicht lesenswert
Eine böse Falle, in die ich bei meinen ersten Versuchen mit emwin 
getappt bin ist, daß ich übersehen hatte, vorher die CRC-Hardware zu 
aktivieren.

emwin läuft Ohne nicht.

Steht im Doc an gut versteckter Stelle.

Vielleicht hilft dir das ja.

von STM32 Starter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tipp, aber cubeMX hat diese Fehlerquelle schon ausgemerzt 
indem das aktivieren des CRC Voraussetzung für die Aktivierung des 
Grafik Frames ist.
Du hast wohl ohne cubeMX gearbeitet. Vieleicht kannst du mir noch ein 
paar Tipps geben:
Wie ist da mit den Layern? Muss man da erst was "aktivieren"?
Wie hast du die Layer Startadressen gesetzt?

von Harry L. (mysth)


Bewertung
1 lesenswert
nicht lesenswert
STM32 Starter schrieb im Beitrag #5736008:
> Du hast wohl ohne cubeMX gearbeitet.

Ich hab schon CubeMX genutzt, aber mit einer Grafik-Hardware, die nicht 
direkt von CubeMX unterstützt wird. (China STM32F407-Board + ILI9341 mit 
16bit-Parallel-Interface)

STM32 Starter schrieb im Beitrag #5736008:
> Wie ist da mit den Layern? Muss man da erst was "aktivieren"?

Ich mußte da nichts extra aktivieren.
Ich hab mich darauf beschränkt, den Treiber für emwin zu schreiben.

Hier ist der Code - vielleicht hilft dir das ja.

https://cloud.it-livetalk.de/index.php/s/RxwpGTNTtRmGqAF

Das sieht dann z.B. so aus:
https://www.youtube.com/watch?v=02-vUJkdGzs

Viel Erfolg!

: Bearbeitet durch User
von STM32 Starter (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ja, dank dir! Cool!
Schaue ich mir heute Abend mal an...

VG

von C. W. (chefkoch)


Bewertung
0 lesenswert
nicht lesenswert
Probiere erstmal aus ob der SDRAM arbeitet! Es gibt da noch die Falle 
das nicht nur die Timingwerte des SDRAM im Controller bekannt sein 
müssen sondern der RAM-Baustein selbst muss auch noch initialisiert 
werden. Falls das noch nicht geschehen ist schau mal im Cube-Paket des 
F4 in den BSPs des Discoveryboards mit TFT wie es dort gemacht wird.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.