Forum: Mikrocontroller und Digitale Elektronik TFT- Ansteuerung ET0350G0DH6 (Glyn) mit HX8238 LCD Driver und Microchip Graphic Lib


von Andreas Häusler (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute

Ich brauche wieder mal Euren geschätzten Rat.
Ich muss in der Firma das obengenannte TFT- Display an einem 
PIC24FJ256DA210 zum Laufen bringen. (Dieser uP besitzt ein "onboard" 
Graphic Controller).
Leider bin ich mit der Ansteuerung ziemlich überfordert.

Microchip liefert gratis eine umfangreiche Grafik- Bibliothek mit:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en543091
Dort sind auch schon diverse Treiber vordefiniert. Leider ist meine 
Konfiguration nicht dabei.

Nun meine Frage:

Muss der HX8238 auf dem LCD nach dem Reset initiallisiert werden, so wie 
dies bei den alten (Bsp. 2x16 Zeilen) Displays der Fall war oder reicht 
es, den Graphic Controller mit den entsprechenden Daten wie Auflösung, 
Frequenz, Back Porch usw. zu füttern.
Ist der HX8238 vom LCD Hersteller evt. schon im Werk an das LCD 
angepasst worden (OTP)? und ich kann nun einfach die 18Bit- RGB 
Schnittstelle bedienen.

Blicke einfach nicht recht durch, wie das gemacht wird. Fast jedes LCD 
Glas kommt mit einem anderen Timing Controller / Gate-Source Treiber 
usw. daher.

Habe geplant neben der QVGA Variante auch die VGA- Displays mit externem 
LCD Controller (SSD1963 Solomon Systech) zu verwenden. Wie verhält es 
sich denn damit?

Bin übrigens auf das Familienkonzept von Glyn gestossen. Ist ne feine 
Sache. Mehrere Displays in verschiedenen Auflösungen und Grössen mit 
immer identischem Anschlusskabel. Selbst die Touch- Signale sind im 
40pol. Anschluss integriert. Somit muss "nur" die Software an das 
jeweilige Display angepasst werden.

http://www.glyn.de/content_xl.asp?wdid=2225&sid=000000267A5557515F5744655751415347


Bin für jeden Hinweis oder Code zu diesem Problem sehr dankbar!

Gruss Andy

von Entwickler (Gast)


Lesenswert?

Um den HX8238 brauchst Du Dich garnicht zu kümmern. Du mußt lediglich 
dem Display die Signale laut Datenblatt liefern. Dabei hast Du die Wahl 
zwischen SYNC-mode und DE-mode, wenn ich nicht irre.
Nimm den SYNC-mode, dann würden auch andere Displays funktionieren.

Dein PIC hat 96kB RAM? Dann reicht es für 256 Farben bei QVGA.
Konzentriere Dich zunächst darauf, die Sync-Signale zu erzeugen 
(korrektes Timing). Danach kannst Du das Display anschließen und z. B. 
farbige Balken anzeigen lassen; vergiss nicht die LUT zu initialisieren.

Das Solomon-Teil fasse erst an, wenn Du die QVGA-Anzeige in Betrieb 
genommen hast. Meiner Ansicht nach ist ein VGA an einem PIC24 etwas 
unterversorgt. Hohe Geschwindigkeit darf man nicht erwarten.

von Andreas Häusler (Gast)


Angehängte Dateien:

Lesenswert?

Hi Entwickler

Danke für Deine Infos, sind sehr hilfreich!
Werde mich gleich mal dranmachen.
Habe übrigens vor, das VGA Display mit einem PIC32 (80MIPS) zu bedienen. 
Damit sollte es in Zusammenhang mit dem ext. Controller keine Probleme 
geben.

Für alle die's interessiert. Im Anhang noch das Datenblatt zum Solomon 
Controller.

Die Firma Techtoys bietet übrigens ein Board inkl. Schema(!) und SW- 
Treiber für die Microchip Graphic Lib mit diesem Controller an:

http://www.techtoys.com.hk/Displays/SSD1963EvalRev2A/SSD1963%20Eval%20Board%20Rev2A.htm

Hab ich gekauft und läuft einwandfrei mit den Microchip Demos...

von Andreas Häusler (Gast)


Lesenswert?

Hab jetzt das Display zum Laufen gebracht, der Controller ist aber noch 
nicht optimal konfiguriert.

Villeicht kann mir ja noch mal jemand weiterhelfen.
Brauche im SW- Treiber folgende Angaben:
1
// Using TFT_ET0350G0DH6 Display Panel
2
  #if (DISPLAY_PANEL == TFT_ET0350G0DH6)  
3
    #define DISP_ORIENTATION    0
4
        #define DISP_HOR_RESOLUTION    320
5
        #define DISP_VER_RESOLUTION    240
6
        #define DISP_DATA_WIDTH      18
7
        #define DISP_HOR_PULSE_WIDTH    25
8
        #define DISP_HOR_BACK_PORCH     68  // 8
9
        #define DISP_HOR_FRONT_PORCH    20  // 8
10
        #define DISP_VER_PULSE_WIDTH    8
11
        #define DISP_VER_BACK_PORCH     18  // 7
12
        #define DISP_VER_FRONT_PORCH    4  // 5
13
        
14
        #if (DISPLAY_CONTROLLER == MCHP_DA210)
15
            #define GFX_LCD_TYPE                        GFX_LCD_TFT
16
            #define GFX_DISPLAYENABLE_ENABLE
17
            #define GFX_HSYNC_ENABLE
18
            #define GFX_VSYNC_ENABLE
19
            #define GFX_DISPLAYPOWER_ENABLE
20
            #define GFX_CLOCK_POLARITY                  GFX_ACTIVE_LOW
21
            #define GFX_DISPLAYENABLE_POLARITY          GFX_ACTIVE_HIGH
22
            #define GFX_HSYNC_POLARITY                  GFX_ACTIVE_LOW
23
            #define GFX_VSYNC_POLARITY                  GFX_ACTIVE_LOW
24
            #define GFX_DISPLAYPOWER_POLARITY           GFX_ACTIVE_HIGH
25
        #endif
26
  #endif // #if (DISPLAY_PANEL == TFT_ET0350G0DH6)

Bis auf #define DISP_HOR_PULSE_WIDTH und #define DISP_VER_PULSE_WIDTH 
ist alles klar. Nur diese beiden Werte kann ich nicht aus dem Datenblatt 
lesen.

Hier noch ein Kommentar im Sourde für den SSD1289 Controller, vielleicht 
hilft das noch ein wenig weiter:
1
/* note: For SSD1289 
2
      
3
      tHBP (horizontal back porch)= DISP_HOR_BACK_PORCH + DISP_HOR_PULSE_WIDTH
4
      tVBP (vertical back porch)  = DISP_VER_BACK_PORCH + DISP_VER_PULSE_WIDTH
5
6
      Horizontal Cycle (280) = tHBP + DISP_HOR_FRONT_PORCH + DISP_HOR_RESOLUTION
7
      Vertical Cycle (326)   = tVBP + DISP_VER_FRONT_PORCH + DISP_VER_RESOLUTION
8
9
      In summary, the DISP_HOR_PULSE_WIDTH should not exceed tHBP and 
10
      the DISP_VER_PULSE_WIDTH should not exceed tVBP. See SSD1289 data sheet for 
11
      details.
12
    */

Das Datenblatt zum Display findet Ihr ja ganz oben.

Im Voraus herzlichen Dank...

von Entwickler (Gast)


Lesenswert?

>Bis auf #define DISP_HOR_PULSE_WIDTH und #define DISP_VER_PULSE_WIDTH

Da muß man sich das Diagramm ansehen; Minimum für beide ist wohl jeweils 
2. Ich verwende für Vsync 3 und für Hsync 30. Die Werte sind unkritisch, 
da die hintere Schulter immer mit der fallenden Flanke beginnt. 
Wichtiger sind daher die Werte 18 und 68. Hiermit wird die Lage des 
Bildes vorgegeben.

Noch etwas: ENB sollte auf '1' liegen und wichtig ist noch die richtige 
(steigende) Flanke von Dclk in der Mitte der gültigen Daten.
Der S1D13705 Controller macht es zum Beispiel anders herum; hier ist ein 
Inverter für Dclk notwendig.

von Andreas Häusler (Gast)


Lesenswert?

Werde ich morge gleich ausprobieren, danke!

Mit den jetzigen Einstellungen ist mein rechteckiger Rahmen, den ich am 
Rand des Displays mit Pixelbreite= 1 gezeichnet habe komischerweise ein 
paar Pixel nach rechts verschoben. D.h. der rechte Rand des Rechtecks 
ist nicht mehr auf dem Display sichtbar. Ich habe also scheinbar noch 
ein Problem mit der horizontalen Verschiebung.

Wünsche noch einen schönen Abend...

von Entwickler (Gast)


Lesenswert?

>Ich habe also scheinbar noch
>ein Problem mit der horizontalen Verschiebung.


Ich kenne den PIC24 nicht. Beim Epson S1D13705 kann man den 
DISP_HOR_BACK_PORCH nur in 8er Schritten eingeben. Das war recht blöde, 
weil man nur 64 eingeben konnte und für die Pixel immer noch einen 
Offset von 4 zur x-Position addieren mußte, um das Bild ganz links 
beginnen zu lassen.
Vielleicht macht der PIC ähnliche Faxen. Probiere es einfach aus!

von Andreas Häusler (Gast)



Lesenswert?

So, läuft alles perfekt.
Möchte mich bei allen beteiligten Bedanken.

Im Anhang noch die relevanten Dateien, welche für den Betrieb des Gyln- 
Displays im Zusammenhang mit der Microchip Grafic Library notwendig 
sind.

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.