Forum: Mikrocontroller und Digitale Elektronik Timings fuer TFT


von Ronald M. (Gast)


Angehängte Dateien:

Lesenswert?

Moechte ein LCD TFT (QVGA 320*240, 16 Bit Farbtiefe) mit einem LCD 
Controller meines ARM9 ansprechen. Das TFT verfügt ueber einen 18 Bit 
RGB Anschluss. Also 18 Datenpins(jeweils 6 fuer rot, gruen, blau) 
ausserdem ueber einen DataEnable und einen DataClock Pin.
Bei TFTs dieser Art muessen ja folgende Werte aus dem Datasheet 
entnommen und im Controller justiert werden: Framerate (=60Hz), 
Pixeltakt (=6,4MHzund die Werte jeweils fuer hor. und vertikales Timing:
Frontporch, Backporch, Pulsewidth

Ich bin mir allerdings nicht sicher inwiefern diese Werte dem 
beiliegenden Datasheet zu entnehmen sind...

Danke fuer Die Hilfe!

von Ronald M. (Gast) (Gast)


Lesenswert?

Keiner einen Tipp fuer mich?

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Angehängte Dateien:

Lesenswert?

Hallo,

bist du dir ganz sicher, dass beides kompatibel ist?
Wenn ja, evtl. musst du nicht nur den LCD-Controller des ARM einstellen 
(timings), sondern auch das TFT selbst (Helligkeit, Kontrast, 
Farbwertkorrektur,...).
Diese timing-Sachen "Frontporch, Backporch, Pulsewidth" sind oft 
ziemlich standardisiert, also wenn das nicht im Datenblatt steht (was es 
aber sollte), dann probier einfach die Werte aus einem Datenblatt eines 
vergleichbaren TFT oder die nach dem VGA Standard skalieren. Solange du 
den Pixeltakt nicht ganz ausschaltest, geht das Display auch nicht 
kaputt. Also probier einfach mal.
Vielleicht hilft dir dieser kleine Auszug im Anhang weiter, trotz dass 
deine Auflösung nicht dabei ist.

von Ronald M. (Gast)


Lesenswert?

Hi!

ja also kompatibel ist beides.
Inzwischen konnte ich auch immerhin schon ein Bild anzeigen (vertikale 
s/w streifen) allerdings flackert in der oberen haelfte das bild.
Das display hat auch einen VSYNC und HSYNC Eingang und kann in beiden 
Modi DE (Dataenable also ohne V/HSYNC) und eben SYNC modus betrieben 
werden.
Allerdings steht im Datasheet nix wie ein Modus selektiert werden kann.
Hab die beiden SYNC eingaenge mal pullup/pulldown hilft aber nix.

So kann ja nun eig, nur noch eine Frage des Timings (also pulsewidth, 
und der porches sein) oder (siehe Datenblatt im Anhang im ersten post)?

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Also wenn die obere Bildhälfte flackert, dann haut was mit VSYNC nicht 
hin.
Ich denke, dass der DE mode nur das HSYNC ersetzen kann. Im Diagramm ist 
aufgezeichnet, dass beide 1 sind, wenn Inhalt dargestellt wird, also 
wird man den jeweils anderen 1 lassen müssen, je nach dem welchen mode 
man verwenden will.

von Gerhard (Gast)


Lesenswert?

Polarität der Sync-Signale beachtet?

von Ronald M. (Gast) (Gast)


Lesenswert?

Zitat: "Also wenn die obere Bildhälfte flackert, dann haut was mit VSYNC 
nicht
hin.
Ich denke, dass der DE mode nur das HSYNC ersetzen kann. Im Diagramm ist
aufgezeichnet, dass beide 1 sind, wenn Inhalt dargestellt wird, also
wird man den jeweils anderen 1 lassen müssen, je nach dem welchen mode
man verwenden will."

Hm ist das nicht eigenartig eine Mischung aus SYNC und DE Mode? Aber Ok.
Nur wie meinst du das genau mit den einen 1 lassen, ich wuerde das LCD 
gern im DE Mode betreiben.
Du meinst dann also VSYNC trotzdem verbinden und HYSNC mit Pullup gegen 
3,3V?
HAb ich dich da richtig verstanden?



Zitat: "Polarität der Sync-Signale beachtet?"
Auch wenn das im DE Mode eigentlich egal sein sollte, sollten die beide 
laut Diagramm im Anahng im ersten Postring invertiert seinn?!

Danke

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Ja HSYNC mal auf 3,3 V stellen und sehen, obs geht.

von Ronald M. (Gast) (Gast)


Lesenswert?

hilft leider nix. scheint doch ein problem mit den timings / porches zu 
sein oder eine polaritaet ist falsch.
auf anfrage beim displayhersteller wurde gesagt dass das disoplay im 
de-mode ist wenn hsync und vsync offen sind.

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Die untere Displayhälte funktioniert wohl problemlos?
Hast du mal was anderes ausgegeben, als senkrechte Striche - mal einen 
Farbverlauf getestet?

von Ronald M. (Gast) (Gast)


Lesenswert?

Bei der Ausgabe von vertikalen schwarz-weiss streifen wird die untere 
Haelfte angezeigt (die obere wohl auch) aber die obere haelfte des 
displays flackert und wabert.

bei der ausgabe von horizontalen streifen flackert das ganze bild.

beim ausgeben eines komplett schwarzen schirms flackert die obere 
haelfte

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Also rutscht das Bild immer hoch und runter. Gibst du VSYNC aus? Oder 
machst du das jetzt mit DE?

von Ronald M. (Gast) (Gast)


Lesenswert?

ich mach das mit DE, VSYNC und HSYNC sind nicht angeschlossen

von Ronald M. (Gast) (Gast)


Lesenswert?

aber stimmt das bild springt quasi hoch und runter jeweils ueber die 
haelfte des bildschrims

von Ronald M. (Gast) (Gast)


Lesenswert?

wobei dabei auch bei der oberen haelfte (also das huepfende bild) die 
farben vertausch sind, also die weissen balken schwarz und anders herum.

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Nur wie geht das mit der vertikalen Synchronisation, wenn nur DE 
verwendet wird? Man muss doch über DE irgendwie nicht nur das 
Zeilenende, sondern auch das Bildende angeben - wahrscheinlich, wenn für 
mehrere Zeilen DE aus bleibt?
Hast du beachtet, dass da nicht nur links und rechts ein "porch" 
hingehört, sondern auch oben und unten?

von Ronald M. (Gast) (Gast)


Lesenswert?

Also das Display verfuegt nur ueber einen DE und Clock anschluss es 
erzeugt also die V/H Syncs intern.

Ja dafuer gibts ja horizontal und vertical front/back porches.
Das Display weiss ja wie breit und hoch es ist und kann somit die 
Clocktakte mitzaehlen und die noetigen syncs erzeugen. Aber  habe 
immernoch das beschrieben problem.

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Also, du hast DE für 68 CLK-Zyklen auf low, danach high für alle 320 
Bildpunkte (320 Zyklen). Wenn sich das ganze 240 mal ereignet hat, dann 
legst du DE für die Dauer von 18 Zeilen auf low?

von Ronald M. (Gast) (Gast)


Lesenswert?

ich weiss nicht wie das display aus dem DE Signal genau die V/H Syncs 
erzeugt.
Das DE Signal ist aber ein periodisches Signal bei mir mit 50 us high 
pegel.

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Die 50 µs stimmen schon mal (49,92 µs). Nun solltest du aber versuchen 
darüber das Display auch noch vertikal zu synchronisieren, in dem du es 
1145,664 µs lang auf low belässt, um ein neues Bild zu beginnen.

von Ronald M. (Gast) (Gast)


Lesenswert?

ah okay.
wie muss ich das machen? an den einstellungen zu verticak back und front 
porch?

von Ronald M. (Gast) (Gast)


Lesenswert?

und wieso genau 1145 us?

danke

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Also, wo kommt denn dein DE-Signal her? Kommt es aus dem LCD-Controller? 
Dann musst du das dort irgendwie einstellen.

von Ronald M. (Gast) (Gast)


Lesenswert?

muessten es nicht 156 ns  320  240 = 12 ms sein?

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Nein, das ist die Zeit in der Daten an das Display gesendet werden (pro 
Bild). Die Zeit, die ich genannt hatte, ist die V-Sync-Zeit, daran 
erkennt das Display, dass es sich um ein V-Sync handelt, schließlich 
musst du jetzt H-Sync und V-Sync gemeinsam über DE übertragen und das 
Aussehen beider Signale unterscheidet sich nun mal in der Dauer, sonst 
wüsste das Display ja nicht, ob das nun V-Sync oder H-Sync ist.

von Ronald M. (Gast) (Gast)


Lesenswert?

aber wie kommst du auf die berechneten werte?
koenntest du mal den verlauf des den signals darlegen? am besten mit 
pulsdauerberechnuung

danke

von Ronald M. (Gast) (Gast)


Lesenswert?

50 us ist klar ist fuer die zeilen syncronisation und kommt von:
320 mal 1/clock = 320 mal 156 ns

die andere zeit zur vsync?

die frage ist halt nun auch wie ich diese aus dem lcd datenblatt 
entnehme. weil je nach lcd muessen die evlt anders sein denk ich,

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Also, ich habe die Werte: 156  408  18 gerechnet (7344 Zyklen), da 
kommen die 1145 us raus. So lange muss das Signal auf low sein. Dann 
geht es auf high für 320 Zyklen (50µs), wo eine Zeile übertragen wird. 
Danach kommt wieder low für 88 Zyklen (13,728 µs), was den backporch 
dieser Zeile und den frontporch der nächsten enthält. Dann kommt die 
nächste Zeile mit high für wieder 320 Zyklen. usw. bis man alle 240 
Zeilen geschrieben hat. Danach kommt der lange low des DE, dessen Dauer 
aber scheinbar nicht sonderlich kritisch ist, Hauptsache es sind mehrere 
Zeilen, evtl. ist das Minimum 408 * 22,5 Zyklen und das Maximum 408 * 
72,5 Zyklen. Die 408 * 18 sind wohl doch etwas zu gering gewählt (ist 
eine andere Zeit). Aber probier das erst mal so.

von Ronald M. (Gast) (Gast)


Lesenswert?

Aja okay klingt einleuchtend und logisch.

Allerdings hab ich eine andere Herangehensweise genutzt (basierend auf 
folgendem guten Tutorial:
http://www.sharpsma.com/Page.aspx/americas/en/8cbb0ad8-b24a-41c7-8d13-2ddcec863c84/LCD_Reference_Information/

Dort der Link "Interfacing LCD Panels to Microcontrollers" unter WHITE 
PAPERS.

Um nun meinem Mikrocontroller beizubringen das richtige Dataenable 
Signal auszugeben muss dieser mit VSPW (vertical sync pulse width), VBPD 
(vertical back porch) und VFPD (vertical front porch) konfiguriert 
werden. Analog HSPW, HBPW und HFPW. Hierfuer entnimmt man dem Datenblatt 
des Displays, meiner Meinung:
VSPW: 3
VBPW: 18 - 3 = 15
VFPW: 262.5 - 240 - 15 = 5

Und Analog fuer:
HSPW: 30
HBPW: 68-30 = 38
HFPW: 408-320-68 = 20

Weiterhin muss angegeben werden die Polaritaet:
- Uebernahme der Daten at Dataclock rising edge
- Data normal (not inv)
- Data Enable normal (not inv)

Hab nat auch schonmal mit VSPW, VBPW und VFPW gespielt aber nix 
geaendert...
Das sind nun die Daten (basieren auf dem obigen Tutorial und dem 
Datenblatt) die fuer mich auch aufgrund deiner Erklaerung logisch 
erscheinen, aber der komische Effekt auftritt.

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Miss doch mal das DE mit dem Oszilloskop nach und schaue was da raus 
kommt.

von Ronald M. (Gast) (Gast)


Lesenswert?

Jo schon gemacht.
Also der Verlauf fuer die hor. Sync schaut gut aus: 50us high dann low.
Das ganze wiederholt sich eben fuer alle Zeilen des Displays.

Dann kommt der lange low-Pegel (zustaendig fuer die vertikale Sync) und 
zwar 1,2ms.

Ist nun halt die Frage wie lange der vertikale low-Pegel low sein muss. 
Dessen falscher Wert ist wohl fuer den Bildfehler und das Flackern 
verantwortlich vermute ich.
Beeinflussen kann ich die Dauer des langen low-Pegels (vert. Sync) durch 
die Angaben VSPW, VFPW und VBPW in den Registern des LCD Controllers.

Dabei sollte ja eigentlich die Verteilung egal sein, es muss nur die 
Gesamtsumme stimmen?

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Stell das mal auf 1,432080 ms, die 1,2 ms sind wohl etwas kurz.

von Ronald M. (Gast) (Gast)


Lesenswert?

Welche Werte muss ich denn fuer vertical front/back porch und vert. sync 
pulse width einstellen um an deine Zeit zu kommen?

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

>Dann kommt der lange low-Pegel (zustaendig fuer die vertikale Sync) und
>zwar 1,2ms.

Mit deiner gewählten Einstellung müssten es schon 1,4 ms sein!
Ansonsten probier mal einen längeren frontporch.

von Stefan H. (Firma: dm2sh) (stefan_helmert)


Lesenswert?

Wenn es geht, mach doch mal Fotos von deinem Aufbau und ein Video von 
dem flackendem Display.

von Ronald M. (Gast) (Gast)


Lesenswert?

ok getestet leider keine grossen Aenderungen.
Es flackert zwar etwas anders, aber immernoch gleiches Problem:
Obere Haelfte des Bildschirms flackert bei der Darstellung eines Bilds 
mit s/w vertikalen Streifen.
Bei hor. Streifen is das ganze Bild verwischt/flackert.

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.