3,5" TFT 320x480Pixel mit ILI9486

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • 3,5" TFT 320x480Pixel mit ILI9486

      Hallo Leute, ich habe mir für ein Projekt das o.g. Display der Fa.Kuman gekauft und möchte es in Betrieb nehmen. Gedacht ist es normalerweise zum Anschluss an den Raspberry. Das Display wird über SPI angesteuert, macht auf der Platine aber eine Seriell-Parallelwandlung mit 16Bit. Hat auch den Touchcontroller den ich Moment aber noch nicht nutze. Das Ganze ist im Moment an einem Arduino MEGA2560 mit 5V-3,3V Pegelwandler und halt das Display.
      Ich habe mir die Routinen von hkipnik für den ILI9341 genommen und soweit ich glaube zu wissen angepasst. Ich hab zur Initialisierung Werte aus einem Arduino-Programm genommen. Jetzt mal abgesehen von der Init mit ihren diversen Gamma- und VCOM-Werten hab ich die Werte hoffentlich kapiert und richtig benutzt.

      Aber es klappt nicht richtig ;( .
      Es sieht so aus dass der Init wohl funktioniert und das LCD_clear das Display in der entsprechnden Farbe löscht. Aber sonst ist Essig. Ich bin soweit mit meiner Suche gekommen dass die Lcd_set_window Routine nicht klappt. Egal was ich für einen Range über H2A und H2B einstelle, es wird ignoriert. Das Clear läuft wohl nur deshalb weil die H2A,H2B-Ranges beim Start auf 0 und Max sitzen Hab schon den SPI-Takt verkleinert, ohne Erfolg. Ein zweites Display macht dasselbe. Ausgaben von Daten beginnen immer an 0,0.


      Ich habe den Code mal angehängt. Der ist abgespeckt und alles auf das Minimalste reduziert um Fehler auszuschliessen. Wäre nett wenn mal jemand (ich hoffe auf Mr.Display :rolleyes: ) mal draufschauen kann. Ich bin im Moment mit meinem Latei an Ende.
      Dateien
    • Hallo hkipnik, sorry, falsche Datei gepostet, schick die richtige morgen. Ich habe mal im Internet gesucht und einen Schaltplan gefunden der wohl dem Display entspricht. Ohne Backlight-Steuereingang und SD-Karte. Dabei ist mir jetzt aufgefallen dass das WR-Signal erst nach 16 Takten generiert wird. Die write_command Funktion aber nur ein Byte versendet. Ich werde morgen mal probieren ein Null-Bytes zuerst zu senden. Wäre schön wenn es das wäre.
      Dateien
    • Und wieder ich. Ich bin einen grossen Schritt weiter. Das Display zeigt mir was an. Ich habe die lcd_set_window Routine durch folgenden Code ersetzt:

      Quellcode

      1. Sub Lcd_set_window(byval Xpos As Word , Byval Ypos As Word , Byval Xepos As Word , Byval Yepos As Word)
      2. Call Lcd_write_command(&H2a)
      3. Call Lcd_write_data(high(xpos))
      4. Call Lcd_write_data(low(xpos))
      5. Call Lcd_write_data(high(xepos))
      6. Call Lcd_write_data(low(xepos))
      7. Call Lcd_write_command(&H2b)
      8. Call Lcd_write_data(high(xpos))
      9. Call Lcd_write_data(low(xpos))
      10. Call Lcd_write_data(high(xepos))
      11. Call Lcd_write_data(low(xepos))
      12. Call Lcd_write_command(&H2c)
      13. End Sub
      Alles anzeigen
      Sollte imho zwar dasselbe wie die Assemblerroutine machen aber zumindest läuft es damit schon mal. Jetzt weiss ich immerhin wo ich weitersuchen muss.
      Was mir auch noch nicht so zusagt sind die Farben. Die sehen irgendwie nicht so aus wie sie heissen, ausser Weiss und Schwarz :) .
    • Hab ich probiert, RGB, GBR. Gefällt mir auch nicht, sieht bei beiden Variationen irgendwie komisch aus. Sehr seltsame Farben. Irgendwie hab ich das Gefühl als ob es Übertragungsfehler gibt. Ich suche mal weiter
      Wäre interessant rauszufinden warum die Assemblerroutinen nicht laufen. Habs sowohl mit der .79 als auch mit der .81 probiert, gleiches Ergebnis. Könnte es Timingprobleme geben?
      Nun denn, dann gehe ichs mal wieder an.
    • Hallo hkipnik,
      hatte leider letzte Woche keine Zeit mich um das Display zu kümmern. Ich hatte bei mir schon die Pegelwandler in Verdacht und hab mir mal andere bestellt mit dem gleichen Ergebnis. Ich hab deine Version mal ausprobiert und siehe da, wie erwartet klappt es.
      Ich hab mir mal deine Sourcen angeschaut und gesehen dass du nach jedem Byte ein Chipselect machst. Hat das mit dem ILI zu tun oder damit, den 4040 Zähler gezielt zurückzusetzen?
      Ich hatte schon gemerkt dass ich ab und an erst ein Dummybyte senden musste um eine sinnvolle Ausgabe zu bekommen. Aber das mit dem CS fiel mir nicht ein || . Aber gut dass dass es jetzt klappt. Vielen Dank dass du dir den Code angeschaut hast und das Display zum Laufen bekommen hast.
      Nun kann ich mich weiter auf mein Projekt konzentrieren.

      Bis danne mal,
      Joachim
    • Kleiner Hinweis zu ILI9846 / 3,5" Raspberry PI (320x480)

      Aktuell nutze ich ein solches Display (von Elegoo), welches mit dem Programm von Hkipnik aus Post#11 in allen Funktionen einwandfrei arbeitet.

      Allerdings startete es oftmals nicht. Erst nach Einfügen eines Wait (1sec) gleich zu Beginn des Programms startet es zuverlässig jedesmal nach dem Einschalten.