So nach Seite 13 und 14 des Datenblattes vom TFT.
Was mich jetzt wundert, sollte die Anzahl der Zeilen nicht die Summe der
sichtbaren und nicht sichtbaren Zeilen sein?
Entsprechend bei der Zeilenlänge in Takten.
480 + 48 = 528 -> != 525
800 + 176 = 976 -> != 928
Habe ich mich da mit dem Datenblatt und den Parametern vertan, oder soll
das so sein?
Das hier sind die Parameter für das 3,5" TFT das ich bisher benutzt
habe, die habe ich von FTDI übernommen:
1
#define FT_VSYNC0 (0L) // Tvf Vertical Front Porch
2
#define FT_VSYNC1 (2L) // Tvf + Tvp Vertical Front Porch plus Vsync Pulse width
3
#define FT_VOFFSET (13L) // Tvf + Tvp + Tvb Number of non-visible lines (in lines)
4
#define FT_VCYCLE (263L) // Tv Total number of lines (visible and non-visible) (in lines)
5
#define FT_VSIZE (240L) // Tvd Number of visible lines (in lines) - display height
6
#define FT_HSYNC0 (0L) // Thf Horizontal Front Porch
7
#define FT_HSYNC1 (10L) // Thf + Thp Horizontal Front Porch plus Hsync Pulse width
8
#define FT_HOFFSET (70L) // Thf + Thp + Thb Length of non-visible part of line (in PCLK cycles)
9
#define FT_HCYCLE (408L) // Th Total length of line (visible and non-visible) (in PCLKs)
10
#define FT_HSIZE (320L) // Thd Length of visible part of line (in PCLKs) - display width
Moin Rudolph
Ich muss zugeben das ich bisher nie darüber nachgedacht habe...
Nur mal eine Idee ohne Garantie auf sinnhaltigkeit:
Kann es sein das die unsichtbaren Pixel (Zeilen) am Ende des des Screens
nicht mitgezählt werden?
Die andere Idee die ich hätte wäre das der jeweilige Sync Puls ganz oder
teilweise abgezogen wurde.
Grüße
Frank
Das macht bestimmt irgendwie Sinn, nur passen die Angaben im TFT
Datenblatt nicht zu den Angaben im Grafik-Chip.
Ich würde ja erwarten, dass die komplette Zeile die Summe aus sichtbaren
und nicht sichtbarem Bereich ist.
Statt dessen sieht das so aus, als ob FT_VOFFSET sich nur auf den
vorderen Bereich bezieht, das muss wohl kleiner sein als FTVCYLE -
FT_VSIZE.
Und die hinteren Bereich sind irgendwie nur implizit enthalten, obwohl
Tvb und Hvb von der Bezeichnung her zum TFT Datenblatt passen.
Hmm.
VCYLE = 525
VSIZE = 480
Nach Datenblatt vom TFT ist "VS Back Porch (Blanking)" mit 32
anzusetzen.
525 - 480 - 32 = 13
VOFFSET = 13
VSYNC0 = 0 - einfach weil, ist bei allen Konfiguration die ich finden
konnte so
VSYNC1 = 2 - aus dem Hut gezogen, ist kleiner als 13
HCYCLE = 952 -> 30 MHz Takt 525 952 -> 60,02 Hz
HSIZE = 800
"HS Back Porch (Blanking)" = 88
952 - 800 - 88 = 64
HOFFSET = 64
HSYNC0 = 0
HSYNC1 = 20 - warum nicht, ist kleiner als 64
Und sieh an, auch diese Konfiguration gibt ein Bild.
Wie man das wirklich und richtig einstellt weiss ich damit zwar leider
immer noch nicht genau, aber wenigstens zeigt das Ding was an...
Rudolph schrieb:> Wie man das wirklich und richtig einstellt weiss ich damit zwar leider> immer noch nicht genau
Richtig steuert man ein TFT so an, dass es genau den Daten im Datenblatt
des TFTs entspricht. Wobei üblicherweise bei den meisten Displays ein
größerer Bereich für Front und Fack Porch erlaubt ist. Auch die
Synclängen müssen meist nicht auf ein Pixel genau eingehalten werden,
auch da gibt es im TFT Datenblatt min. und max. Werte. Man versucht
zuerst mal das TFT Datenblatt zu verstehen, dann das Graphicchip
Datenblatt, dann stellt man die Register, und dann misst man das ganze
Timing mittels Oszi nach. Und zwar Pixelgenau (z.B. Trigger auch 950tes
Pixel nach Syncflanke....).
Dabei stellt man dann manchmal fest, dass man so manche Angaben im
Datenblatt falsch interpretiert hat, oder dass mit einen fixen
Pixeloffset der irgendwo in der Fußnote beschrieben ist und welchen man
bei der Berechnung abziehen müsste, übersehen hat, und dann stellt man
die Register nochmal nach. Oder entscheidet dass es eh innerhalb der TFT
min./max. Werte liegt. Oder die andere Möglichkeit die die Pfuscher
nehmen - kopiere irgendwoher irgendwelchen Code für irgendein Display
und wenn ein Bild angezeigt wird, dann wird's schon okay sein.
Sorry genauer kann ich dir nicht helfen. Ich habe zwar schon viele TFTs
mit diversen Controllern angesteuert, aber deinen Controller und dein
TFT eben noch nicht. Also musst du die korrekten Werte selber aus den
Datenblättern suchen.
Und ja, Gesamtlänge ist sichtbare + unsichtbare Pixel. Manchmal wird
aber der Teil des Syncs nicht mitgezählt (vor allem bei der
Programmierung der Controller Register), manchmal schon. Je nachdem
welcher interne Zähler von wo abgeleitet wird. Aber da gibt es bei allen
Controllern und auch TFTs die ich kenne entsprechende Zeichnungen und
Timingdiagramme wo man das alles ablesen kann.
Wenn das nur immer so einfach wäre. :-)
Ich habe ja schon vorher die Datenblätter gewälzt.
Und dann hier nachgefragt, bevor ich das ausprobiert habe.
Zusätzlich habe ich mir andere Konfigurationen aus dem Netz gefischt und
diese mit den TFT Datenblättern dazu verglichen.
Sah nur leider auch wieder anders aus - und aus den Daten geht ja nicht
hervor, was die sich dabei gedacht haben oder ob die stimmen.
Ich habe mal die dazugehörigen Abschnitte aus den Datenblättern
extrahiert.
Wie man im DS_FT81x...pdf sehen kann wird im Diagramm der Abschnitt vor
den eigentlichen Pixeln gezeigt.
Und die dazugehörigen xOFFSET werden beschrieben als "..of non-visible
part...".
Passend dazu gibt es Txf und Txb Abschnitte, wobei Thf auch ausdrücklich
als "Horizontal Front Porch" beschrieben wird, was nahe legt, dass mit
"Thb" auch Horizontal Back Porch gemeint sein müsste.
Nur bekommt man mit der Annahme kein Bild raus.
Im Datenblatt vom TFT sieht das schon etwas anders aus.
Dort sind xSYNC0 und xSYNC1 in einem Wert zusammen gefasst.
Tvb ist auf der einen Seite der Pixel, Tvfp auf der anderen, tv ist der
ganze Bereich und tvd der sichtbare.
Noch was ganz anderes, das FT810CB-HY50HD hat einen resistiven
Touchscreen und unerklärlichweise scheint die Auflösung von diesem
extrem schlecht zu sein, mit einem Stylus bekomme ich keinerlei
Touch-Events.
Nur wenn man schön flächig die Fingerkuppe auflegt passiert da was.
Ich meinte so ein Bildchen für einen Controller. Sowas veranschaulicht
für mich die Tabelle. Und bei deinem Display Bild fehlt mir sowas wie
hier im zweiten und dritten Bild (Sharp, Epson). Dieses Epson hier ist
z.B. ganz pingelig während das Sharp einige Abweichungen verträgt. Wenn
du diese Angaben vom TFT nicht hast, dann fehlt entscheidendes.
Hallo Rudolph,
angefixt durch die derzeitigen Beiträge zum FT8xx werde ich wohl auf
diesen Zug aufspringen. Hast Du die Problematik mit der Empfindlichkeit
des Touchs von Deinem 5" Touchdisplay von "Hotmcu" in den Griff
bekommen?
Gruß Holger...
Holger S. schrieb:> Hast Du die Problematik mit der Empfindlichkeit> des Touchs von Deinem 5" Touchdisplay von "Hotmcu" in den Griff> bekommen?
Nein, gar nicht, ich weiss auch nicht, was ich da noch ausprobieren
kann.
Ich glaube, das Touch-Panel ist einfach nur Mist, leider finde ich da
keinerlei Spezifikation zu.
Auf jeden Fall ist die Folie auf der Oberseite schon recht "labrig", das
ist bei dem 3,5" von FTDI komplett anders.
Wenn ich mir die Rohwerte anzeigen lasse, passiert mit dem Stylus rein
gar nichts.
Leider ist das Panel an dem Folientleiter des Displays angeschlossen,
das kann man nicht mal runterkratzen und ein neues anbringen.
Der Support von HAOYU meldet sich auch nicht mehr.
Insgesamt war das FT810CB-HY50HD wohl ein Griff ins Klo, zumindest für
die praktische Verwendung.
Zum Rumspielen hat es immer noch den FT810 als Pluspunkt.
Und für eine Grafik-Demo und/oder mit fetten Icons ist das bestimmt auch
nett.
Ein 5" mit FT811 in 480x272 hätte was, oder 7" mit 800x480.
Hat nur soweit ich weiss noch niemand.
Selber bauen ist auch nicht so einfach, zumindest nicht bei
kapazitiv-Touch.
Das "Problem" ist da, dass der FT8x1 nur mit bestimmten
Touch-Controllern per I2C kommunizieren kann.
Okay, ich nehme alles zurück, das Touch-Panel von dem FT810CB-HY50HD
funktioniert auch mit einem Stylus sowie jetzt mit leichtem Druck durch
einen Fingernagel.
Beim Durchgehen der Register war ich nur zu blöd, die Bedeutung von
REG_TOUCH_RZTHRESH richtig zu erkennen.
Der "typical value" von 1200 ist einfach zu wenig für das Panel.
Ich habe das jetzt auf 2000 laufen und damit reicht ein leichter Druck
mit etwa dem Griff von einem Joghurt-Löffel um Touch-Events zu bekommen.