Forum: Projekte & Code 4,3" TFT-Controller STM32F730


von Mi N. (msx)


Angehängte Dateien:

Lesenswert?

Bei der Erweiterung einer bestehenden Schaltung mit 4,3"-TFT-Display bot 
es sich an, diese um ein paar Schnittstellen zu ergänzen und für ein 
derzeit günstiges Display benutzbar zu machen. Das Display ED043003DH6 
ist als Restposten in hinreichender Stückzahl erhältlich: 
https://www.pollin.de/p/lcd-modul-et043003dh6-tft-480x272-121498

Ausgelegt für STM32F7xx/H7xx µCs ist hier ein vorläufiger 
Zwischenschritt zu sehen, der die Ansteuerung und Zeichen/Grafikausgabe 
erledigt. Verwendet wird ein STM32F730, der per internem Speicher und 
DMA das Display mit max. 64 Farben betreibt. Wer vorhat, sich damit 
seine Urlaubsfotos anzeigen zu lassen, wird wohl enttäuscht sein.

Wer eine einfache und affenschnelle Anzeige-/Bedieneinheit sucht, kann 
hiermit zu einer kostengünstigen Lösung kommen. Das TFT-Display wird 
über den FMC-Bus (ext. Daten-/Adressbus) per DMA angesteuert, wobei 
lediglich die Leitungen D0-D5, A16, A17 und /WR auf GPIOD und GPIOE 
benötigt werden. Nutzt man die Helligkeitssteuerung per DAC sowie die 
Auswertung der touch-Folie nicht, können alle Pins von GPIOA – GPIOC 
kollisionsfrei genutzt werden.

Als Minimalschaltung sind neben dem µC nebst Abblockkondensatoren die 
Steckverbinder und Bauteile im Schaltbild rechts vom Controller 
notwendig. Hinzu kommen ein LDO-Spannungsregler 3,3 V und der 
Aufwärtwandler für die Hintergrundbeleuchtung. Optional sind der 
Spannungswandler für die 5 V Versorgung, der RS232 Treiber nebst Piepser 
und der Anschluß für die SPI2-Schnittstelle. Das Bestückungsbild zeigt 
die minimale Beschaltung auf der Leiterplatte.

Die SPI2-Schnittstelle erlaubt schnellste Datenübertragung, was selbst 
mit einem Arduino flotten Bildaufbau ermöglicht. Im Unterschied zu 
anderen Displays mit eingebautem TFT-Controller und RAM ist bei der 
gezeigten Schaltung der µC nicht nur für die Generierung von Text und 
Grafik zuständig, sondern kann auch eigenständige Programme ausführen. 
Der vorhandene Zeichensatz CP850 ist vollständig implementiert. Andere, 
neue Zeichensätze können ergänzt werden. Das Programm kann den eigenen 
Bedürfnissen angepaßt werden: Startbildschirm (Logo) beim Einschalten, 
Fensterverwaltung, programmierbare Makros, ... Der F730 ist der kleinste 
und günstigste Controller dieser Familie. Reichen die 64 KB Flash nicht 
aus, kann über F722 (512 KB) bis zum F767 (2 MB) jeder Typ im TQFP100 
verwendet werden.

Der aktuelle Softwareentwurf (20 KB) ist mit einer IAR EWARM 8.22 
Demoversion entwickelt worden. Dabei wurde mit CubeMX die "main.c" 
erzeugt, die lediglich die Takteinstellungen einfach konfigurierbar 
macht. Der Rest ist SPL- und HAL-frei ;-)
Andere IDEs sollten kein Problem sein.

Anbei noch ein Programm "spi_tft.ino" für einen UNO R3. Mit ein paar 
Steckleitungen kann das Demoprogramm die Möglichkeiten aufzeigen. Zur 
Verwendung der touch-Funktion muß eine RS232-Verbindung per USART3 
hergestellt werden. Höchste Baudrate sorgt für höchste Geschwindigkeit.

von Mi N. (msx)


Angehängte Dateien:

Lesenswert?

Fast vergessen ...

von UNGRES (Gast)


Lesenswert?

Hallo Michael ,

der stm32f746 Discovery hat dieses Display auch.

Könntest du nicht dein Programm umschreiben das Es auf dem  Discovery 
Board läüft ?

Für den Bluepill wäre Es auch interesannt.


ps.: Für die vorschau der Urlaubfotos reicht der stm32f429 Discovery 
(Hat auch FMC) und ein Display mit 800x480 (LTDC).



Du benutzt schon CubeMX , wann wechselst du zur System-Workbench ?

mfg

UNGRES

von Mi N. (msx)


Lesenswert?

Hallo UNGRES,
da ich kein F746-Disco-Board habe, kann ich das Programm auch nicht 
umschreiben. Das Disco-Board ist zudem so mit für mich unnützer Hardware 
überladen, daß es für mich auch keinen Anschaffungsgrund gibt.
Auf einen BluePill wird das Programm nicht laufen, da dort nicht genug 
RAM und kein FSMC vorhanden sind.

Ich benutze nicht schon CubeMX sondern noch. Lediglich main.c wird 
davon erzeugt und dort nur die wichtigen Initialisierungen mit 
HAL_Init() und SystemClock_Config(). Das macht es anfangs leichter, bei 
einem neuen Controller bei der Initialisierung nichts vergessen zu 
haben.
Ab HSE_init() ist dann der Spaß schon vorbei und es wird automatisch auf 
internen oder externen Takt umgeschaltet; und ab hauptprogramm() wird 
nur noch direkt auf die Register zugegriffen.

Der F730 hat ja schon einen internen TFT-Controller, den man auch nutzen 
könnte. Bei einem 100-pol. Gehäuse "klaut" mir dieser aber wesentliche 
Pins, die ich gerne anders verwenden möchte. Aktuell mache ich eine 
Programmversion für den pinkompatiblen H750, dessen großes, internes RAM 
es erlaubt, mehrere Seiten vorzuhalten, auf die dann nur noch 
umgeschaltet werden muß.

von UNGRES (Gast)


Lesenswert?

Hallo Michael ,
natürlich wird Es auf einem BluePill nicht laufen.
Er hat zu wenig Speicher und kein FMC.

Ich dachte als ersatz für den Arduino.
(Für Touch und ansteurung des Terminals)


Immerhin hat der H750 über 1MB Ram.

Mein Display hat 800*480*2 Byte = 750 KB und damit Passt nur Ein Bild 
hinein.

Im Letzten Jahr habe ich Es auf dem F429 zum laufen bekommen (FMC).
(8 MB extern)
Aber der Bildaufbau war sehr ernüchternd.

Mit dem SDIO habe ich mich sehr gequält und hatte auch kontakt mit 
CubeMX .

Schade das ST so wenig Ram mit integriert ansonsten schaut der H750 
vielversprechend aus.

Vor allem Hardware JPEG Codec etc.

von Mi N. (msx)


Lesenswert?

UNGRES schrieb:
> Ich dachte als ersatz für den Arduino.
> (Für Touch und ansteurung des Terminals)

Dafür ist ein BluePill Platinchen natürlich besser geeignet, als ein 
ATmega. Nicht, weil die Schnittstelle (SPI oder UART) zu lange für die 
Datenausgabe brauchen würde, sondern weil es je nach Anwendung viel Zeit 
brauchen kann, dynamische Daten zu errechnen.

Noch besser ist es allerdings, das Steuerprogramm gleich mit auf dem 
STM32Fxxx laufen zu lassen, was aber zumeist ein eigenes Layout 
voraussetzt.


> Immerhin hat der H750 über 1MB Ram.
>
> Mein Display hat 800*480*2 Byte = 750 KB und damit Passt nur Ein Bild
> hinein.

Das Bild paßt aber nur in zwei Stücken ins RAM. AXI bietet 512 KB und 
SRAM1+SRAM2 256 KB, wobei zwischen beiden Bereichen eine Lücke bleibt.
Mit 800x480 ist Dein Display mehr als Faktor 3 größer als ein WQVGA. Bei 
statischen Bildern ist das nicht so bedeutend. Ein Rollen bei 
Textausgabe muß da sichtbar langsamer sein. Sofern man Schrift 
augengerecht anzeigen will, reicht auch kein 5x7 Zeichensatz, sondern 
16x32 oder größer sollte es schon sein.
Renesas hat µCs mit viel RAM auf dem Chip; das schlägt sich aber auch 
deutlich im Preis nieder.

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.