Hi, ich habe einige Wissenslücken was das ansteuern eines TFT Touch Displays betrifft. Wäre sehr Glücklich wenn Ihr mir da ein wenig Aufklärung bieten könntet. :) Ich möchte mit einem Raspi 3 ein TFT in 2“ mit Kapazitiven Touch ansteuern. Nun gibt es verschiedene Displays. Einmal - SPI+RGB interface with driver ic ILI9335 - RGB interface,driver ic ST7789V - MCU interface with driver ic ILI9342C Ich habe gelesen das bei RGB bekommt das Display kontinuierlich seine Daten im TFT üblichen Format (RGB, Hsync, VSync mit einem konstanten Pixeltakt). Zusätzlich ist SPI notwendig um die entsprechenden Spannungs und Timingparameter einmalig einzustellen. Das bedeutet ja das der Bildaufbau langsam ist aufgrund das für ein Vollbild 320x240x2 Bytes, dann 150kByte benötigt wird. Was ich nicht verstehe ist dieses SPI+RGB? Eine weitere Frage ist ob ein MCU Interface ein Mikrocontroller ist welcher für den Bildaufbau sorgt und ich dann bequem über SPI diesem nur Aktualisierungen mitteile? Sind das dann die mit aufgeführten IC`s wie ILI9335, ST7789V oder ILI9342C?? Gibt es bessere Interfaces die ich nicht kenne? Wie läuft das dann mit dem Kapazitiven Touch? Gleich wie bei SPI und MCU nur Rückwärts? Vielen Dank für eure Hilfe. Bin ziemlich neu auf dem Gebiet. Beste Grüße
jdes pixel besteht aus 3leds: Rot Grün und Blau - RGB. jede led wird einzeln angesteuert und braucht dafür einen digitalen Wert von z.B. 8bit => 3 x 8bit =24 bit je pixel. Das kann man auch auf z.B. 16 oder 8bit Farbtiefe reduzieren. diese 24bit können jetzt - Pixel für Pixel - seriell per spi oder parallel - 8bit oder 16bit oder sonstwas breit - an das TFT gesendet werden. Näheres steht im Datenblatt
grundschüler schrieb: > jdes pixel besteht aus 3leds: Nein. TFT-Displays verwenden LEDs höchstens für die Hintergrundbeleuchtung.
zu allererst einmal, Touch und das TFT sind nicht miteinander verbunden
außer mit Klebstoff, damit die Touch Fläche auf dem Bildschirm nicht
herumrutscht.
Erst mal das Display. Die wichtigen Fragen sind
- wie kann der uC die Konfiguration des TFT vornehmen ?
- wie kann der uC auf den Grafikspeicher zugreifen, um Bildinhalte zu
ändern?
- wer muss sich um die regelmäßige Auffrischung des TFT kümmern ?
- wo kommen die Betriebsspannungen/analoge Ansteuerung für das TFT her ?
- ist der TFT Controller mit eigenem Speicher ausgestattet oder nur mit
einem Zeilen-/Spaltentreiber und benötigt einen Datenstrom vom TFT ?
Die Konfiguration ist meist nur beim Start nötig, muss also nicht
schnell erfolgen.
Das Ändern muss je nach Anforderung nicht unbedingt schnell erfolgen,
oft kann eine teilweise Aktualisierung vom Bildinhalt ausreichend sein.
Die Auffrischung muss aber einem strengen Timing folgen, das muss
schnell erfolgen und sehr exakt, damit keine Bildfehler auftreten.
Aus Programmierersicht wäre es am einfachsten, wenn alle 3
Konfigurationselemente als internes RAM vom uC zu adressieren wäre. Das
setzt vorraus, das entweder der TFT Controller im uC integriert ist oder
aber am Speicherbus des uC angeschlossen.
Aus Kostengründen oder Architekturgründen wird bei uCs gerne darauf
verzichtet.
Ein 8-bitter hat z.B. einen zu kleinen Adressraum für große Displays,
ausreichend großes SRAM ist teuer bei der Integration, oder die
Rechenleistung des uCs reicht eh nicht aus um Grafik schnell umzusetzen.
Alternativ kann man einen externen TFT Controller mit dem uC verbinden.
Universell entworfen, können verschiedene TFTs angeschlossen werden,
aber nie alle, da auch hier mit dem SRAM gespart wird. Da universell
ausgelegt, muss der TFT Controller vor dem ersten Bild passend auf das
verwendete TFT konfiguriert werden, vorzugsweise durch externe
Beschaltung und irgendeiner seriellen Schnittstelle wie I2C, SPI, usw...
Wenn es nicht auf Geschwindigkeit ankommt kann auch der Bildinhalt
seriell übertragen werden. Oft kann man aber den TFT Controller auch so
einstellen, das er die Konfiguration seriell erhält, die Bilddaten aber
über ein i80 Parallel Interface.
Den Bildrefresh steuert der TFT Controller dann gemäß seiner
Konfiguration eigenständig ohne Zutun des uC, ebenso die Erzeugung der
Betriebsspannungen.
Bei TFT Controllern ohne eigenem Bildspeicher muss dann der uC den
Datenstrom kontinuierlich liefern, nur der analoge Teil wurde dem uC
abgenommen. Das wäre dann das RGB Interface mit H-Sync/V-Sync.
Aus wirtschaftlichen Gründen hat sich folgende Aufteilung bewährt:
A)Displays mit einer Auflösung kleiner/gleich 320x240@24bit,
B)Displays größer 320x240@24bit bis 800x480(600)@24bit
C)Displays größer 800x600@24bit.
Der größte Kostenfaktor ist der SRAM Bildspeicher bzw. die schnelle
Schnittstelle vom uC zum TFT. Die benötige Speichergeschwindigkeit
wächst schnell mit der Auflösung.
A ist immer über eine serielle Verbindung möglich,
B braucht für flüssigen Bildaufbau mehr schnellen Speicher und CPU
Leistung
C braucht zusätzlich zu B schnelle Busse, die statt wie in B nicht mehr
parallel sondern seriell+differenziell umgesetzt werden, um die
Signalintegrität zu gewährleisten.
Der Raspi ist ein voll ausgebauter Prozessor mit integrierter
Grafikkarte und 3D Beschleunigung, kann 1920x1080@24bit über HDMI und
DSI, beides differentielle, serielle Schnittstellen mit eigenem
Protokoll und Verschlüsselung für DRM Videodecoder in Hardware. Der
Videotreiber ist schön closed source, da DRM und IP-verdongled.
Aber zum Glück ist es ja ein embedded System und hat eine GPIO Leiste.
Da kannst du beliebige Hardware anschliessen, auch einen TFT Controller
der Kategorie A) und B), mit deutlichen Geschwindigkeitsnachteilen.
Das selbe gilt für den Touch Controller, die haben auch meist I2C oder
SPI als Schnittstelle bei der Klasse A) B) der TFTs.
Ob es nun sinnvoll ist ein SPI TFT an einen Raspi mit integrierter 3D
Beschleunigung anzuschliessen musst du entscheiden. Aber manchmal will
man es ja nur machen, weil andere sagen, das geht nicht. Viel Spass beim
Proggen.
>Gibt es bessere Interfaces die ich nicht kenne?
Die meisten bekannten Display Controller, die man so frei gebraucht/neu
kaufen kann haben ISA/EISA/PCI/AGP/PCI-E Interfaces und werden von
AMD/NVidia gefertigt. Intel integriert sie nur direkt in die CPU.
Es gibt aber noch unendlich viele andere wie z.B. Zorro Bus und so
weiter und so weiter, die alle proprietär sind.
Für embedded bist du bei Ilitek / Solomon usw. schon gut aufgehoben.
Zieh dir mal ein paar Datenblätter und App Notes von denen rein !
Gruß,
dasrotemopped.
Jo das erklärt aber leider nicht meine Fragestellung von oben :(
Sawyer M. schrieb: > - SPI+RGB interface with driver ic ILI9335 > - RGB interface,driver ic ST7789V > - MCU interface with driver ic ILI9342C > > Ich habe gelesen das bei RGB bekommt das Display kontinuierlich seine > Daten im TFT üblichen Format (RGB, Hsync, VSync mit einem konstanten > Pixeltakt). Das ist für einen kleinen μC schon mal ungeeignet, da der im allgemeinen weder genug Speicher noch die notwendige Geschwindigkeit mitbringt. Das geht nur wenn im μC eine dafür vorgesehene Funktionseinheit vorhanden ist. > Zusätzlich ist SPI notwendig um die entsprechenden Spannungs > und Timingparameter einmalig einzustellen. Scheint mir nicht schlüssig, evl. eher für den Touch > Das bedeutet ja das der > Bildaufbau langsam ist aufgrund das für ein Vollbild 320x240x2 Bytes, > dann 150kByte benötigt wird. nicht nur langsam, wenn das überhaupt so langsam geht würdest du immer nur einen Teil des Bildes sehen. Wenn du keine 50-60Hz erreichst wird das nichts. > Eine weitere Frage ist ob ein MCU Interface ein Mikrocontroller ist > welcher für den Bildaufbau sorgt und ich dann bequem über SPI diesem nur > Aktualisierungen mitteile? Ein MCU Interface bedeutet das du per μC Bilddaten anliefern kannst, um den Bildaufbau und Refresh kümmert sich der Displaycontroller selbst. Das Interface musst du nur bedienen wenn du am Bildinhalt was änderen willst. > Sind das dann die mit aufgeführten IC`s wie > ILI9335, ST7789V oder ILI9342C?? z.B. es gibt verschieden Schnittstellen z.B. 8- / 16-Bit parallel oder SPI was du nutzt hängt von den möglichen Leitungen die du am μC anbinden musst sowie vom benötigten Datendurchsatz ab. Parallel > schnell, aber viele Leitungen; SPI > langsam aber wenig Leitungen Die Displaycontroller haben i.d.R. verschiedene Schnittstellen eingebaut, da man das Display selten "nackt" kauft sonden als Modul mit entsprechenden bastelfreundlichen Anschlüssen sind nicht immer alle Varianten die der Controller bietet auch extern zugänglich. > Wie läuft das dann mit dem Kapazitiven Touch? Gleich wie bei SPI und MCU > nur Rückwärts? Da wird ein extra Controller auf dem Displaymodul vorhanden sein der in den meisten Fällen per SPI kommuniziert. Sascha
doch, tut es. du willst nur um das Lesen der Datenblätter von ILI9335, ST7789V oder ILI9342C herumkommen. >Wie läuft das dann mit dem Kapazitiven Touch? >Gleich wie bei SPI und MCU nur Rückwärts? Genau so, RTFM. Gruß, dasrotemopped. PS: Ohne Lesen geht nur mit den Raspi TFTs, die von Raspi-Linux direkt unterstützt werden.
Sascha W. schrieb: > Sawyer M. schrieb: >> - SPI+RGB interface with driver ic ILI9335 >> - RGB interface,driver ic ST7789V >> - MCU interface with driver ic ILI9342C >> >> Eine weitere Frage ist ob ein MCU Interface ein Mikrocontroller ist >> welcher für den Bildaufbau sorgt und ich dann bequem über SPI diesem nur >> Aktualisierungen mitteile? > Ein MCU Interface bedeutet das du per μC Bilddaten anliefern kannst, um > den Bildaufbau und Refresh kümmert sich der Displaycontroller selbst. > Das Interface musst du nur bedienen wenn du am Bildinhalt was änderen > willst. Das bedeutet das ich den Raspi direkt über GPIO´s an das MCU Interface anschließe. Also der Displaycontroller direkt an einen µC angeschlossen wird per GPIO? Also wenn ich mal als Beispiel dieses Display auswähle: http://www.mouser.de/ProductDetail/Displaytech/DT022CTFT/?qs=5aG0NVq1C4w1OFErASsmag%3d%3d Dann hat dieses Touch und den Treiber IC ILI9341V verbaut. Die Schnittstelle ist RGB/MCU. Auf Seite 5 ist dann die Pin Belegung aufgeführt. Wie gehe ich da nun am besten vor wenn ich das an einem Raspi anschließen möchte? Pin 1 ist logisch Pin 2-5 mir nicht klar Pin 6 logisch Pin 7-10 für den Bildaufbau mit Clock und Enable Pin 11-28 Ein paralleler Datenbus? Direkt auf den Raspi? Pin 29-34 außer das es SPI ähnlich und somit vermutlich für das Touch Pin 35 "FMARK" keine Ahnung Pin 36-45 ist mir logisch ------------------------------------------------------------------------ --- P.s: Ich bin villt neu in der Displaywelt, aber würde mich freuen wenn ich durch diesen Forumsbeitrag vieles dazu lernen könnte und villt am Ende theoretisch weiß auf was man achtet und wie man ein TFT mit z.B. RGB/MCU ansteuert. Vielen Dank für eure Hilfe. Bin euch sehr dankbar dafür :)
Sawyer M. schrieb: > Die Schnittstelle ist RGB/MCU. Nein. Die Schnittstelle ist universell. Auswählbar aus mehreren Optionen durch setzen der Bits an Pin 2-5. Ansonsten kann ich mich nur anschliessen an: dasrotemopped schrieb: > RTFM. Sawyer M. schrieb: > Ich bin villt neu in der Displaywelt, .... ... aber du bist auch zu faul um dich in die Materie einzuarbeiten.
Hier noch ein Link für diejenigen die auch zu faul zum Suchen sind. https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf
Erst mal machst du es dir selbst schwerer als nötig, weil du mit jedem neuen Display auch den entsprechenden TFT Controller wechselst. Kein TFT Controller ist der richtige oder falsche, wenn du dich nicht ausreichend damit beschäftigst. Der ILI9341 bei deiner letzten Wahl ist auch OK, aber Pin 2-5 wäre dir klar, wenn du das Datenblatt gelesen hättest. Lad es dir doch mal runter: http://newhavendisplay.com/app_notes/ILI9341.pdf Auf Seite 24 werden die Pins 2-5 erläutert. Da sollte dir dann klar werden, das du konfigurieren musst, welches Interface vom Controller aktiv ist ! Wenn IM0-3 richtig eingestellt sind brauchst du nur SPI und 2 Steuerleitungen für das Display, den Rest kannst du ignorieren. Aber bestell dir lieber ein TFT mit Pinleiste statt Flexkabel, das ist bastelfreundlicher. Auf dem Bild sind 2 TFT mit ili9341 Controller, das auf der roten PCB ist schon vorkonfiguriert für SPI, das andere noch ganz frei konfigurierbar. Der ILI9341 kann einfach alle Schnittstellen, darum ist das Datenblatt auch 245 Seiten lang. Google hilft auch für eine Schritt für Schritt Anleitung: https://www.nico-maas.de/?p=925 https://www.youtube.com/watch?v=wxJpWRPKe-g >vieles dazu lernen könnte und villt am Ende theoretisch weiß .. Theoretisch wissen kann jeder alles, erst wenns läuft kann man was ! Einen Display Controller ganz zu verstehen benötigt ein paar Wochen, da muss man schon was Arbeit reinstecken. Nur was fertiges zusammenzuklicken wird dich nicht weit bringen. Wenn du kein ausgemachter Linux Spezi bist ist der Raspi vielleicht auch nicht der beste Startpunkt. Gruß, dasrotemopped.
Du darfst nicht vergessen, daß du auch die passenden Kernel-Treiber für das Display brauchst. Die kleineren Displays werden üblicherweise via SPI angebunden. Der Touch-Controller hängt ebenfalls am SPI-Bus, hat aber natürlich ein eigenes Select-Signal. Dafür gibts auch für die von dir genannten Chips bereits fertige Treiber, die bereits im Raspbian Kernel enthalten sind: fbtft Im Wiki von fbtft findet man eine schöne Übersicht über die gängigen Displays in Verbindung mit einem Raspberry Pi inkl. Hinweisen zum Anschluss: https://github.com/notro/fbtft
:
Bearbeitet durch User
dasrotemopped schrieb: > Erst mal machst du es dir selbst schwerer als nötig, weil du mit jedem > neuen Display auch den entsprechenden TFT Controller wechselst. Kein TFT > Controller ist der richtige oder falsche, wenn du dich nicht ausreichend > damit beschäftigst. Der ILI9341 bei deiner letzten Wahl ist auch OK, > aber Pin 2-5 wäre dir klar, wenn du das Datenblatt gelesen hättest. > Lad es dir doch mal runter: > http://newhavendisplay.com/app_notes/ILI9341.pdf > Auf Seite 24 werden die Pins 2-5 erläutert. Da sollte dir dann klar > werden, das du konfigurieren musst, welches Interface vom Controller > aktiv ist ! Aha, das war wohl der Hinweis der mir fehlte. Habe ich das nun richtig verstanden!? Wenn ich für IM3 IM2 IM1 IM0 folgendes setze 1 1 1 0 in dem ich einfach die auf Vcc oder GND setze. Somit habe ich ja schlussendlich 4-wire 8-bit data serial interface gesetzt. Die Verdrahtung läuft ja dann wie in diesem Link https://learn.adafruit.com/user-space-spi-tft-python-library-ili9341-2-8/wiring ab. Nur falls ich das Display verwende mit dem FPC kable, muss ich erst auf einen FPC Stecker und von da aus das die verdrahtung an den SPI vornehmen. Alles richtig? Aber eins verstehe ich immer noch nicht. In der Produkt beschreibung steht ja das es Touch hat. Aber ich finde nirgends einen Touchcontroller den ich dann noch per SPI anbinde? Bin ich schon wieder blind? Den muss ich vermutlich auf ähnliche art und weise setzen wie beim Displaycontroller, oder? http://www.mouser.de/ProductDetail/Displaytech/DT022CTFT/?qs=sGAEpiMZZMu%2fRY1bNe3bO6wz7D657ZcE%2f%252b%2fKrmS%2fuqf4%252bj%2fpIKcI7g%3d%3d > Einen Display Controller ganz zu verstehen benötigt ein paar Wochen, da > muss man schon was Arbeit reinstecken. Nur was fertiges > zusammenzuklicken wird dich nicht weit bringen. Wenn du kein > ausgemachter Linux Spezi bist ist der Raspi vielleicht auch nicht der > beste Startpunkt. Anschließend kommt noch das Programmieren.
:
Bearbeitet durch User
Sawyer M. schrieb: > Bin ich schon wieder blind? Den muss ich vermutlich auf ähnliche art und > weise setzen wie beim Displaycontroller, oder? Das habe ich dir schon hier erklärt! Beitrag "Re: Display Ansteuerung" Willst du nicht lesen, oder verstehst du das nicht?
Ungläubiger schrieb: > Das habe ich dir schon hier erklärt! Daher auch die mehrfache Empfehlung von verschiedener Seite dass du doch besser ein fertiges LCD Modul verwenden solltest. Da ist der Touch Controller schon drauf. Oh Mannnnnnnn.....
Ungläubiger schrieb: > Ungläubiger schrieb: >> Das habe ich dir schon hier erklärt! > > Daher auch die mehrfache Empfehlung von verschiedener Seite > dass du doch besser ein fertiges LCD Modul verwenden solltest. > Da ist der Touch Controller schon drauf. > Oh Mannnnnnnn..... Ja ich weiß das alles einfacher wäre wenn ich ein fertiges Modul nehmen würde das extra auf den Raspi zugeschnitten ist. Jedoch brauche ich eben 2.2" mit Kapazitiven Touch. Das gibt weltweit noch nicht als perfektes Raspi Modul. Was macht man wenn es so etwas nicht gibt? Genau, versuchen alles zu verstehen und selbst sich das Modul zusammen zu bauen. Sonst hätte ich ganz einfach deine Tipps angenommen für die ich dir auch sehr dankbar bin. :)
:
Bearbeitet durch User
Sawyer M. schrieb: > Ich habe gelesen das bei RGB bekommt das Display kontinuierlich seine > Daten im TFT üblichen Format (RGB, Hsync, VSync mit einem konstanten > Pixeltakt). Zusätzlich ist SPI notwendig um die entsprechenden Spannungs > und Timingparameter einmalig einzustellen. Das bedeutet ja das der > Bildaufbau langsam ist aufgrund das für ein Vollbild 320x240x2 Bytes, > dann 150kByte benötigt wird. Das siehst du aber ziemlich falsch. Also: beim RGB (RGB, DEN, HSync, VSync) also parallelen Interface kriegt das Display tatsächlich kontinuierlich seine Daten. Der Pixeltakt liegt bei kleineren Displays im 8..10 MHz Bereich und bei etwas größeren (800x480) im 30 MHz Bereich. Bei noch größeren eben noch höher. Die 24 Bit Farbe sollte man bei µC-Basteleien besser vergessen, da sind 16 Bit eher geeignet, weil ausreichend Farbe und weniger RAM-Bedarf. Ein etwaiger SPI-Anschluß ist für den Gebrauch des Displays nicht erforderlich, denn der Takt und überhaupt das Aufsetzen des Bild-Refresh's macht man im µC. Am SPI kann man eher ein serielles EEPROM annehmen, wo die Daten des Displays drin stehen, also Displaygröße in Pixeln, HPorch und VPorch, Breite von HSync und VSync usw. Die direkte Ansteuerung des Displays aus dem im µC vorhandenen RAM ist die schnellste von allen, allerdings zu dem Preis, daß der Systembus heftig belastet ist, so etwa 60 MB/s muß man dort erstmal durchgweinkt bekommen - und das parallel zum Bedarf der CPU. W.S.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.