Forum: Mikrocontroller und Digitale Elektronik Ansteuerung für TFT


von Holger (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe hier einige 640x480 TFT-Displays mit angehängtem Timing (25 MHz 
Takt, Pixeldaten  für die Farben und Enab High bei sichtbaren Pixeln). 
Gibt es ein preiswertes Demoboard, mit dem sich diese TFT ansteuern 
lassen? Es reicht ein Terminalmodus ohne Grafik, ein Bit pro Farbe wäre 
gut.

Mit einem ATMega644 bekomme ich eine Art Testbild hin, allerdings 
scheint der Prozessor mit 25 MHz bei 3,3 V immer mal abzustürzen. Mit 
dem halben Takt ist das Timing wohl kaum hinzubekommen.

Den Propeller habe ich mir mal angeschaut, habe aber keine Möglichkeit 
gefunden, neben dem von VGA abweichenden Timing auch noch die 25 MHz 
Takt auszugeben. Gibt es ein zu den TFT passendes Demoprogramm?

Ein LPCXpresso 1769 hätte ich noch da, habe mich da aber noch nicht sehr 
eingearbeitet. Könnte man dort SSP0/1 als Schieberegister für die Pixel 
benutzen?

Danke schon mal für jeden Tipp.
Holger

von m.n. (Gast)


Lesenswert?

Holger schrieb:
> Mit
> dem halben Takt ist das Timing wohl kaum hinzubekommen.

Doch, das kannst Du machen. 30Hz refresh-Rate sind am unteren Rand, aber 
sollten bei schwarz-weiss-Anzeige noch nicht flimmern.
Ferner kannst Du Dir die 'front porch' Pixel/Zeilen für H-sync und 
V-sync sparen, die zumeist nur aus Kompatibilitätsgründen zu TV-Signalen 
angegeben sind. Wichtig ist die Länge der Sync-Impulse und die 
anschließenden Zeiten, bis das aktive Bild kommt.

Bei meinen Versuchen mit dem STM32F407 Discovery Board komme ich auf 
180fps bei 272x480 und 64 Farben. Abgemagert auf s/w bei VGA Größe 
sollte er das Timing aus Deinem Datenblatt locker schaffen. Als 
Bildspeicher dient das interne RAM, was unschlagbar schnell ist.
http://www.mino-elektronik.de/TFT-direct-drive/TFT-direct-drive.htm

von W.S. (Gast)


Lesenswert?

Holger schrieb:
> ich habe hier einige 640x480 TFT-Displays

Naja, denk doch erstmal nach:
Was willst du damit wirklich machen?
Bei einem bunten Display würde ich auch gern eine bunte Anzeige haben 
und wenn es ein Grafikdisplay ist, dann auch Grafik, genauer: bunte 
Grafik.
Aber dazu braucht es einen RAM, wo man das Bild aufbauen kann.
Zumeist haben solche Displays 18 oder gar 24 Bit Farbe. Damit es nicht 
allzu mickrig aussieht, wären 16 Bit Farbe das Minimum und nun kannst du 
dich entscheiden, ob du direkt (16 Bit pro Pixel) oder per Palette (256 
Paletteneinträge = Farbvarianten) und nur 8 Bit pro Pixel dir gönnen 
willst.
Für 640x480 brauchst du ca. 300 K Byte bzw. bei 16 Bit das Doppelte und 
die mußt du erstmal irgendwo herbekommen und mit deinem uC ansprechen 
können. Das nächstbeste gerade so passende RAM ist 512K * 16 Bit 
statisch, 10..15 ns. Aber du brauchst eben dazu entweder einen uC, der 
die TFT-Ansteuerung schon eingebaut hat oder du mußt dir einen passenden 
Controller besorgen oder aus einem CPLD selber machen. Die letztere 
Variante wäre eigentlich die lehrreichste.

Also, denk erstmal über die grundlegenden Realisierungschancen nach.

W.S.

von m.n. (Gast)


Lesenswert?

W.S. schrieb:
> Naja, denk doch erstmal nach:
> Was willst du damit wirklich machen?

Holger schrieb:
> Es reicht ein Terminalmodus ohne Grafik, ein Bit pro Farbe wäre
> gut.

Ich denke, er hat nachgedacht und auch geschrieben, was er will.
Wenn jemand Fahrrad fahren möchte, muß man ihm doch kein Auto 
aufzwingen.

Alles unter 16 bit/pixel als mickrig abzustempeln, ist mir ein wenig 
hochnäsig. Ein leichter Blick von oben, unten oder einer Seite, läßt die 
schönsten Farben der Welt auf den gebräuchlichen TFTs zu Fehlfarben 
abdriften. Aus Jux habe ich mal einen 16 bit/pixel Testaufbau (RX210) 
gemacht. Meines Erachtens lohnt das nicht. Da nutze ich den Speicher 
doch besser für zwei Grafikseiten mit je 8 bit/pixel.
Für Bedienteile/Steuerungen reichen 16 - 64 Farben locker und brauchen 
erheblich weniger RAM.

von Holger (Gast)


Lesenswert?

Richtig, ich suche nach einer möglichst einfachen Lösung, die TFT als 
Terminal, beispielsweise an einem Carambola zu nutzen. Auch 20 Zeichen 
bei 10 Zeilen wären o.k. Und es sollten nur wenige IC auf einer 
Lochrasterplatte sein.
Wie schon oben geschrieben, Propeller wäre gut, mir fehlt aber der 
Überblick, ob das benötigte Timing damit überhaupt machbar ist.

Beim ATmega kenne ich mich mit C leidlich aus, damit wird das Timing 
aber nicht machbar sein.

Ich werde wohl mal versuchen, ein Testbild mit dem LPCXpresso 
hinzukriegen und dann schauen, ob es sich für mich lohnt weiter zu 
machen.

Danke für die Beiträge.
Holger

von m.n. (Gast)


Lesenswert?

Holger schrieb:
> Auch 20 Zeichen
> bei 10 Zeilen wären o.k.

Das ist nun sehr ungeschickt!
Um eine Zeile mit 20 großen Zeichen zu beschreiben müßte die 
Zeichengröße auf einem VGA 32x64 sein, wobei dann 10 Zeilen möglich 
sind, wenn man den Zeichensatz auf 32x48 staucht (keine Unterlängen, 
keine Grafik). Per Hardware kann man die Pixelbreite aufpusten, indem 
pro Pixel entsprechend viele CLK-Impulse ausgegeben werden. Die 
Pixelhöhe kann man aber nur durch Wiederholung der ganzen Zeile 
erreichen.
Bleibt man bei 1 bit/pixel, braucht ein vergleichsweise langsamer AVR 
recht lange, ein einzelnes Zeichen zu zeichnen.

> Ich werde wohl mal versuchen, ein Testbild mit dem LPCXpresso

Für ein s/w-Bild werden 640x480/8 = 38400 Byte möglichst an einem Stück 
und auf jeden Fall per DMA erreichbar benötigt. Auf den ersten Blick 
überschaue ich nicht, welches RAM der DMA-Controller beim LPC1769 
adressieren kann; er bietet aber nur 32kB am Stück. Unter Umständen wird 
also noch zusätzliches RAM gebraucht.

Wenn es einfach bleiben soll, wäre ein separater Displaycontroller (z.B. 
S1D13705) wohl die bessere Wahl.

von Ramon F. (tronixx)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

da wie man sieht diese Beiträge nicht weiter kommentiert werden, mein 
Anliegen dem Titel entspricht und ich nicht unnötiger Weise ein weiteren 
Thread eröffnen möchte, greife ich diesen hier noch einmal auf :)

Ich habe zu meinem Display 2 Fragen bei denen ich mir in der 
Realisierung noch etwas unsicher bin.

Ich besitze ein Display (von Reichelt gekauft, Datenblatt siehe Anhang)
  -   TFT-Display 14,5cm (5,7) ohne Touch Panel, 640x480 VGA

Ansteuerung erfolgt über das SPARTAN 3 Board von Digilent!

Laut Angaben besitzt dieses Display einen integrierten LED Treiber!

Gefordert werden 30V bei konstant 40mA (siehe Pic1)
Weiter hinten im Datenblatt (S. 12) steht dann nun unter Interface 
Signals Folgendes (Siehe Pic2). Siehe auch pic3!

PIN35
  NON CONNECTION -> USING INTERNAL LED DRIVER
  ANODE          -> USING EXTERNAL LED DRIVER
PIN36
.........

Also zu meiner Frage zurück:

Versteh ich das richtig, das die 30V bei konstant 40mA nur für den 
externen LED Treiber gültig sind? D.h. wenn ich mir das leben einfach 
machen möchte und den internen LED Treiber benutze, lass ich Pin 35 
offen und steuere Pin 36 mit 0V-2,5V an. Mich verunsichert dabei etwas 
die Tabelle (pic3). Bedeutet das, dass wenn ich auf Pin 26 0V (also GND) 
lege meine Backlight am hellsten strahlt ? Weil so wie ich das verstehe 
wird der PIN 36 (LEDCNTRL) ja mittels einer Spannungsquelle und nicht 
wie bei LEDs üblich mit einer Stromquelle versorgt.

MfG

von M. N. (Gast)


Lesenswert?

Auf die Rückseite des Displays ist eine kleine Platine geklebt, die 
schon den Spannungswandler für die Hintergrundbeleuchtung enthält.

Lege einfach Deine Steuerspannung (0 - 2,5V) an Pin36; mehr ist nicht zu 
machen!

von Ramon F. (tronixx)


Lesenswert?

vielen Dank für die schnelle antwort.

da ich nur 3,3V VCC am Board habe sollte doch ein 1k Vorwiderstand 
vorerst genügen um unterhalb von 2,5V zu kommen oder?
kenn ja leider nicht die restliche Impedanz .

MfG

von M. N. (Gast)


Lesenswert?

Ramon F. schrieb:
> kenn ja leider nicht die restliche Impedanz .

Die kenne ich auch nicht, aber "hochohmig" würde es hinreichend 
beschreiben. Eine große Zeitkonstante hat der Steuereingang auch noch, 
sodass man direkt per PWM ansteuern kann.

Noch etwas: nimm am besten einen pullup-Widerstand und schalte die 
Hintergrundbeleuchtung aktiv mit einem Portpin ein. Andernfalls 
kann/könnte das Display beim Einschalten aufblitzen.
Das wollen Wir doch nicht?

von Ramon F. (tronixx)


Lesenswert?

Stimmt das wollen wir nicht :)

würde es auch ein stinknormaler Spannungsteiler tun?


     3,3V
      |
      |
     | | 1k
     | |
      |
      |------------- Pin 36
      |
     | | 1k
     | |
      |
      |
      -
     GND

MfG

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.