TFT direct-drive für diverse µController

Schaltungsbeispiele für Renesas RX610, RX210, H8SX/1668R und STM32F407

 

übliche TFT-Ansteuerung
einfache TFT-Ansteuerung
1. Schaltung für RX610 und STM32F407
2. Schaltung für RX210
3. Schaltung mit H8SX/1668R
4. kleines Demoprogramm für STM32F4
5. Ausführung mit STM32F407 und 5,7" QVGA-TFT
zurück zur Übersicht

 

Stand: 2014-05-01

Für kleinere Meßgeräte oder Steuerungen, kann eine TFT-Anzeige mit Touchscreen die Bedienung deutlich verbessern. Hier werden Beispiele gezeigt, wie aktuelle und kostengünstige µController dies ohne oder ohne viel zusätzliche Hardware nebenbei erledigen können. Eine mininale Wiedergabe mit 64 Farben wird dabei als ausreichend erachtet. Im einfachsten Fall wird das interne RAM des µC als Bildspeicher genutzt. Ein oder mehrere Timer werden nicht benötigt!

 

übliche TFT-Ansteuerung:

In der Regel verteilt man die Aufgaben Steuerung und Anzeige auf einen µController und einen separaten TFT-Controller, die über einen seriellen oder parallelen Bus miteinander gekoppelt sind. Die serielle Ansteuerung des TFT-Controllers kann ausreichend sein, ist aber gegenüber der Ansteuerung mit einem parallelen Prozessorbus langsamer. Bei beiden Verfahren muß der µController in der Regel warten, bis neue Displaydaten abgenommen werden können. Für jedes Pixel muß die entsprechende Zieladresse ausgegeben werden, was zusätzliche Buszyklen erfordert. Der Prozessor wird ausgebremst.

Eine deutlich schnellere Displayausgabe kann stattfinden, wenn der µController einen TFT-Controller mit auf dem Chip hat, sodaß die Zugriffe auf den Bildspeicher direkt erfolgen können. Ein externes RAM für den Bildspeicher ist zumeist zusätzlich notwendig, wodurch aber auch große Displays mit hoher Farbtiefe betrieben werden können. Geeignete µController sind allerdings teurer, aufwendiger zu beschalten und für kleinere Schaltungen damit etwas überzogen.

Einen anderen Weg TFTs anzusteuern ist Renesas gegangen, indem diverse neuere µCs mit einem externen DMA-Controller ausgestattet sind. Die Daten eines ext. RAMs werden per exDMA direkt auf das parallele Interface eines QVGA- oder WQVGA-Displays geschrieben. Die vorhandenen Timer (einer MTU) erzeugen die Signale für DCLCK, Hsync und Vsync und der DMA-Controller liefert synchron die Daten dazu. Das liefert Bilder mit 16 Bit Farben bei 60 Bildern/s, wie es für übliche TFTs ausreichend ist.
Diese Art der Ansteuerung hat aber einen kleinen Haken: während die Displaydaten ausgegeben werden, ist jeglicher Zugriff auf den Bildspeicher durch die CPU nicht zulässig. Die synchrone Datenausgabe darf nicht gestört werden. Dies wird in der Regel dadurch kompensiert, daß der Vsync-Impuls abgewartet wird, wo keine Datenausgabe zum TFT erfolgt. Ein RTOS kann für Transparenz der Zugriffe sorgen.

nach oben

einfache TFT-Ansteuerung:

Beschränkt man sich zunächst auf eine einfache Farbwiedergabe mit 64 Farben, kann jedes Pixel in einem Byte gespeichert werden. Für ein QVGA-Display braucht man 320x240 = 76800 Byte und ein WQVGA-Display in der Regel 480x272 = 130560 Byte. Der Bildspeicher eines QVGA-TFT kann problemlos in einem µC mit 96k internem RAM untergebracht werden; bei einem WQVGA sind 128k internes RAM erforderlich, was 131072 Bytes entspricht. Für mache Anwendung können die 'nur noch' verbleibenden 512 Byte für Stack und Variablen ausreichen. Geschickter ist es jedoch, die Bildhöhe um zwei auf 270 Zeilen zu verringen, womit dann weitere 960 Byte freies RAM der Anwendung zur Verfügung stehen.

Der Vorteil dieser Ansteuerung ist der direkte und uneingeschränkte Zugriff der CPU auf den Bildspeicher! Es müssen nur <2% der CPU-Leistung für die TFT-Ausgabe 'abgegeben' werden. Ferner wird kein Timer benötigt.

Erweitert mit einer ext. Farbzuordnungstabelle (CLUT) lassen sich mit einem Byte ein Satz von 256 Farben anzeigen. Verwendet man ein zusätzliches ext. RAM können auch 65536 Farben dargestellt werden. Die Schaltung weiter unten für den RX210 zeigt diese Möglichkeit.

nach oben

1. Schaltung für RX610 und STM32F407:

Beide Controller verfügen über min. 128k internes RAM und können damit direkt ein WQVGA-TFT ansteuern. Die Schaltung ist simpel:

Beim Controller muß das ext. Speicherinterface aktiviert werden und die Displaydaten können per DMA ins TFT geschrieben werden. Die DMA-Ausgabe ist freilaufend und braucht keinen Timer. Nachfolgend Beispielbilder, wie sie auf einem WQVGA angezeigt werden. Bei den für die Ausgabe eines Zeichens angegebenen Zeiten ist zu beachten, daß hierbei schon ein Test auf Überschreiben des Bildbereiches enthalten ist. Außerhalb des Bildspeichers kann somit nichts 'zerschossen' werden!

Die Schaltung wurde mit einem RX610-Demoboard (CPU-Takt 96MHz) und einem STM32F4-Discovery Board (CPU-Takt 168MHz) realisiert.

Beschränkt man sich auf ein QVGA-Display kommen auch weitere µCs der RX-Serie mit 96k RAM in Betracht, die direkt angeschlossen werden können: RX62N, RX621, RX630. Die Ausgabegeschwindigkeiten entsprechen dem eines RX610.

nach oben

2. Schaltung für RX210:

Folgende Schaltung wurde für ein RPBRX210 Demoboard entwickelt, um zu sehen, was ein 'kleiner' µC der RX-Serie leisten kann. Es ist ein ext. RAM vorhanden, welches 16Bit Farbtiefe erlaubt und 3 x QVGA- oder 2 x WQVGA-Bilder gleichzeitig speichern kann. Da der RX210 nur mit 50MHz arbeitet, sind die Bildwiederholraten niedriger aber immer noch beachtlich und vielfach auch ausreichend. Beim einem QVGA-TFT werden 50 bzw. 58 Bilder/s erzeugt.

Hier zunächst der üppige Schaltplan:

und die Anzeige selbst:

Abschließend hierzu der noch nicht vollendete Musteraufbau, der huckepack auf das RPBRX210-Demoboard gesteckt ist:

nach oben

3. Schaltung mit H8SX/1668R:

Diese Schaltung verwendet den exDMA-Controller des 1668R. Die Vsync- und Hsync-Signale wurden noch mit im Bildspeicher untergebracht, was bei der ersten Umsetzung der TFT-Direktansteuerung die absolute Synchronität sichergestellt hat. Ein ext. RAM war in jedem Fall notwendig, der der Controller nur über 56k internes RAM verfügt.

Dazu das Foto einer Leiterplatte mit den Grundfunktionen, Piepser, RS232 und Spannungversorgung:

 

nach oben

4. kleines Demoprogramm für STM32F4:

Für das STM32F4-Discovery-Board existiert ein kleines Demoprogramm zur WQVGA-Ansteuerung, mit welchem folgendes Bild erzeugt wird:

Die Quelldatei ist 'main.c' mit dem Zeichensatz 'cp850-8x16.dat'. Das ausführbare Programm ist 'STM32F4-WQVGA_TFT.hex'.

Die gezeigten Routinen können erheblich (>Faktor 2) optimiert werden. Um die Übersichtlichkeit nicht zu beeinträchtigen, ist die Abfrage des touch-screen entfallen. Für eigene Anwendungen muß sichergestellt sein, dass der Prozessor initialisiert ist und mit 168MHz läuft.

Da bis auf ca. 1kB der zusammenhängende Speicher von 128kB belegt ist, sollte für den Stack und weitere Variablen das 64kB große CCM verwendet werden. Wenn nur ein QVGA-TFT verwendet wird, bleibt erheblich mehr RAM frei. Die Ausgabe zum Display erfolgt freilaufend ohne Timer über das FSMC-Interface, was mit der einfachen Beschaltung für weitere Verwendung blockiert ist. Mit ein bißchen Logik und einem 74VHC573 Latch, können per FSMC-Bus auch weitere Speicherbausteine (o.ä.) ext. angeschlossen werden.

Mit der angehängten .hex-Datei kann man ohne großen Aufwand und ohne TFT die Beine vom µC wackeln lassen. Vsync (PD11) und Hsync (PD12) zeigen das Timing.

nach oben

5. Ausführung mit STM32F407 und 5,7" QVGA-TFT:

Als Beispiel für eine fertige Anzeige, ein paar Bilder einer Version mit dem STM32F407.
Das erste Bild zeigt die rückwärtige Montage der Leiterplatte auf einer 5,7"-TFT-Anzeige. Auf der rechten Seite befindet sich der 10-pol. Steckverbinder, der die RS232-Signale RxD und TxD bereitstellt und über den auch die Versorgungsspannung angelegt werden kann. Pin 10 dieses Steckers wird als BOOT0-enable für die Programmierung per USART3 verwendet.
Hinzu kommen der Schaltregler 12-24V -> 3,3V, ein (schallgedämpfter) Piezo-Piepser mit OPV als Treiber und ein 10-pol. Stecker für potentielle Erweiterungen.

Links oben befinden sich der µC nebst Quarz, SWD-Anschluß und EEPROM für Kalibrierdaten. Links unten dann ein paar Gatter, die das Attribut 'Blinken' erlauben, und ferner eine Schaltung, die für stabiles Ein-/Ausschalten der Anzeige sorgt.

Dann noch zwei Bilder einer Anwendung, mit der Zahlenwerte und Texte eingegeben werden und sich auf Grund des 5,7"-Displays noch mit den Fingern bedienen lassen.

 


nach oben

zurück zur Übersicht