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
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
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.
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.
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
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.
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
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!
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
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?