Unbekanntes TFT Display, Welcher Controller ist verbaut?

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Unbekanntes TFT Display, Welcher Controller ist verbaut?

      Hallo

      Ich habe hier ein Display von ebay.
      Es ist auf einem Shield für Arduino Uno und lässt sich mit 8 Bit ansteuern.
      Ebenfalls auf dem Shield ist Touch und ein SD-Slot.
      Alles läuft über Pegelshifter und soll daher mit 5V Boards gehen.
      Nach Verkäufer soll das Display 380x400 Pixel Auflösung haben. Der Controller ist ihm aber unbekannt.

      Meine Recherche ergab, dass es ein ILI-Controller sein müsste, vielleicht ILI94-81 /-86 oder -88.

      Wie kann ich jetzt herausfinden, welcher Controller es genau ist?

      Kann man das irgendwie mit Display-Kommandos abfragen?

      Beim ILI9481 gibt es da ein Befehl, der liefert aber Unsinn. Liefern sollte beim ILI9481 mit Kommando &hBF (Device Code Read) die ID &h9481, kommt aber &h6868.
      Von daher scheidet der 9481 schon aus.

      Wer kann helfen? Idee?
      IMG_6710.JPGIMG_6711.JPG
    • Ja, habe es mir dank deinem Link angesehen.
      Danke dafür.

      Und es hat auch etwas weiter geholfen.

      Das Display gibt jetzt auch tatsächlich etwas von sich. Touch geht auch.
      Das Diagnose-Programm gibt folgendes aus:
      ID=6814
      320x480

      Display geht schon mal.
      Leider mit Arduino.

      Wenn ich die ID richtig interpretiere, könnte es ein ILI6814 Controller sein.

      Bei der Internet-Suche bin ich auf dieses Bild gestoßen: Link
      Auf dieser Seite: Seite

      Nach dem Bild könnte es auch ein ILI9468 sein.
    • Vielleicht interressiert es ja jemand.
      Die ILI-Controller und die Datenblätter sind eine ziemliche Katastrophe.

      Ich habe jetzt einige Datenblätter gewälzt und komme zum Schluss, dass es ein ILI94xx Controller sein muss.
      Die ILI93xx haben weniger Auflösung.

      Das Video von @Ulrich hat mich auf die Seite mcufriend.com geführt.
      Mit den Libs bekommt man erst mal ein korrekte Anzeige.

      Man muss sich da echt durchwühlen und hat mit jetz 2 Tage gekostet.

      Aber da gibt es ein Beispiel-Programm von der genannten Lib, welche die ID des Controllers ausspuckt: 6814
      Demnach müsste es ein ILI6814 sein. Google spickt aber nur einen Sensor aus, also kein Datenblatt auffindbar.

      Mit dem Tool konnte ich aber die ID manipulieren und testen, mit welchen Controlelr-ID's ich eine Anzeige bekam.
      Heraus kam, dass ich Anzeige mit ID: 9481 und 8486 bekam. Allerdings ist die Anzeige gespiegelt. Aber das kann man wohl auch einstellen.

      Ich frage mich nun, warum ich diese ID 6814 nicht auslesen konnte.
      Falsches Kommando? Die sind ja nicht bei allen Controllern gleich.
      Vielleicht falsch ausgelesen. Display ist ja nicht initialisiert. Also weiß ich auch nicht, ob das richtig ausgelesen wurde.

      Beide Datenblätter zum ILI9481 und zum ILI8486 geben nichts an, welche Schnittstelle beim Einschalten eingestellt ist.
      Auch ist in den Datenblättern keinerlei Initialisierungssequenz angegeben, echt traurig.

      Aber im Code von mcufriends konnte ich nach den ID stöbern und habe 4 unterschiedliche Sequenzen zum Initialisieren gefunden.
      Die 4 Varianten sind wie folgt angegeben:
      • ILI9481_PVI35
      • ILI9481_AUO317
      • ILI9481_CMO35
      • ILI9481_RGB
      Sagt das einem was?

      Sonst muss ich eben alles mal ausprobieren.

      Jaja, die Chinesen, schlecht Datenblätter schreiben können die echt gut! :D
    • Mitch64 wrote:

      Auch ist in den Datenblättern keinerlei Initialisierungssequenz angegeben
      Weil meißtens keine nötig ist. Der Befehl "Ein" reicht. Alles andere in den Inits sorgt für systembedingte Anpassungen (z.B. Busbreite bei Lcd, Helligkeit,Bildstand etc) Mit den vorhandenen inits in Verbindung mit dem Datenblatt wird ersichtlich was darin nötig/überflüssig ist.

      Mitch64 wrote:

      welche Schnittstelle beim Einschalten eingestellt ist.
      Hardware codiert?
    • Pluto25 wrote:

      Der Befehl "Ein" reicht.
      Welcher ist das denn?

      Pluto25 wrote:

      Hardware codiert?
      Das Display ist auf einem Shield. Was da codiert ist weiß ich nicht, das kann man ja nicht sehen.
      Ich gehe aber von 8 Bit Datenbus aus.

      Zumindest kann ich so das Display schon mal aus dem Sleep-Mode holen und das Display einschalten.
      Das Display zeigt dann ein verrauschtes Stand-Bild, ähnlich einem Fernseher von früher, wenn kein Sender eingestellt ist.
      Angesteuert habe ich es über 8 Bit Bus, also müsste es so kodiert sein.
    • Mitch64 wrote:

      Das Display zeigt dann ein verrauschtes Stand-Bild,
      Das ist ideal zu erkennen welche Adresse wofür zuständig ist/ wo beginnt. Einfach Nullen reinschreiben und schauen welche Ecke schwarz wird. Ist es die Falsche stehen im Datenbatt die Befehle die Schreibrichtung und Oben/Unten zu ändern. Um dann später die passende Init zusammenzustellen. Möglich ist auch es vor dem Einschalten zu löschen oder zu füllen.
      Wenn mehrere Anschlussstellen herausgeführt sind ist oft eine Lötbrücke vorbereitet die gewünschte Ansteuerung auszuwählen.
    • Das Abfragen der Display-ID liefert für mich keine eindeutigen Werte.

      Kommando $BF und 5 Byte abfragen ergibt: $FF $FF $68 $68 $68

      Das Kommando $D3 ist "Power_Setting for Partial Mode", das erwartet ein Parameter (nach Datenblatt), aber liefert nix.

      Oder meinst du tatsächlich das als Sequenz absenden?
      Also Command $D3, dann Command FB und dann 5 Byte lesen?
    • Ich beziehe mich jetzt hier auf das Datenblatt ILI9481!

      Aktuell sieht es so aus, dass ich eine Linie per SetPixel auf das Display zeichnen konnte.

      Problem 1: Linie soll mit ROT gezeichnet werden, erscheint aber in blau
      Problem 2: Die Display-Ausrichtung ist Portrait und brauche Landscape

      Der Befehl um das umzustellen ist wohl das Kommando $36 (Set_address_mode).
      Oder liege ich falsch?

      Wenn ich da aber andere Werte rein schreibe, ändert sich nichts.
      Egal was ich einstelle, keine Reaktion.

      Ich habe den Eindruck, dass der Befehl nicht angenommen wird.

      Auf der anderen Seite gibt es ein Kommando $0B (Get_address_mode).

      Das gibt den Wert $00 zurück. Demnach sollte RGB und nicht BGR eingestellt sein.
      Trotzdem wird die Farbreihenfolge BGR ausgegeben.

      Das führt mich wieder zu der Frage, habe ich denn das richtige Datenblatt?

      Der ILI9481 hat nach Datenblatt ein Befehl $B0 (Command Access Protect), um die Rechte auf bestimmte Register zu unterbinden.
      Auch das habe ich schon versucht. Auch kein Erfolg.

      Langsam bin ich mit meinem Latein am Ende.

      Irgendwie habe ich den Eindruck, dass immer wenn ein Kommando mir Parameter zu schreiben ist, gehts nicht.
      Kommandos ohne Parameter gehen problemlos.
      Ein Code-Fehler konnte ich aber nicht ausmachen.
    • Hallo,
      hast du das Programm schon mal versucht?

      ILI9481-88


      Mitch64 wrote:

      Ja, habe es mir dank deinem Link angesehen.
      Danke dafür.

      Und es hat auch etwas weiter geholfen.

      Das Display gibt jetzt auch tatsächlich etwas von sich. Touch geht auch.
      Das Diagnose-Programm gibt folgendes aus:
      ID=6814
      320x480

      Display geht schon mal.
      Leider mit Arduino.

      Wenn ich die ID richtig interpretiere, könnte es ein ILI6814 Controller sein.

      Bei der Internet-Suche bin ich auf dieses Bild gestoßen: Link
      Auf dieser Seite: Seite

      Nach dem Bild könnte es auch ein ILI9468 sein.

      ID=6814 ist wahrscheinlich der Treiber RM68140

      Gruß
      hkipnik
    • Hallo @hkipnik

      Nein nicht wirklich.
      Ich habe davon aber abgeschaut.

      An dem Code ist leider Port C für die Daten eingestellt.
      Am Arduino gibts aber keinen kompletten Port C.

      Und auf den Mega stecken geht auch nicht.

      Das muss man mit freien Leitungen verkabeln.
      Deswegen habe ich das nicht ausprobiert.

      Was ich aber noch versuchen will, diese 3 unterschiedlichen Initialisierungen bei mir einzubauen und zu versuchen.

      Aber wenn du gerade da bist.

      Was kann es für Gründe geben, wenn das Display den Code $36 nicht annimmt.
      Stellt man damit auch von Portrait nach Landscape um?
    • Aktueller Code-Stand (fehlerbehaftet)

      Ob der Fehler in meinem Programm zu suchen ist?
      Ich habe mehrfach gecheckt, für mich scheint alles OK.

      Aber auf (vielfachen) Wunsch hier mal der Code im Anhang.

      Dieser liefert ein Bild wie angezeigt.

      IMG_6712.JPG

      Die Linie unten rechts im Bild sollte eigentlich eine horizontale Linie in ROT sein.
      Wird aber als Blau angezeigt. Außerdem ist das Portrait und sollte Landscape sein.

      Beides wird wohl mit dem Command $36 (CMD_SET_ADDRESS_MODE) eingestellt.
      Das zeigt aber keine Wirkung.

      Wie stelle ich von BGR auf RGB Anzeige um und
      Wie schalte ich in Landscape um?
      Files
      • Main.zip

        (4.82 kB, downloaded 9 times, last: )