Forum: Mikrocontroller und Digitale Elektronik 3,2 Zoll TFT und XMEGA32A4


von Wayson (Gast)


Lesenswert?

Guten Morgen,

ich hab dieses Display:
http://www.sainsmart.com/module/lcd-module/sainsmart-3-2-tft-lcd-display-touch-panel-pcb-adapter-sd-slot-for-arduino-2560.html

mit einem AVR Atxmega32A4-AU MCU. MCU ist auf selbstgeätzter Platine und 
kann fertig programmiert werden.
Ich bin mir unsicher, wie ich den TFT ansteuern soll: SPI oder Parallel. 
Wenn ich nach Beispielcode suche, finde ich z.B. den hier:
Beitrag "XMega & SSD1289 Display Controller"

Ich wollte zunächst Seriell ansteuern aber als ich auf der AVR Seite 
Beispielcode dazu gesehen habe, dachte ich mir das das für den Anfang zu 
komplex sein könnte. Daher will ich doch liebe erstmal Parallel 
ansteuern.

Hierzu habe ich jetzt folgende Fragen:
1. Bei Code hier aus dem Forum ist mir absolut nicht klar, ob ich jetzt 
8 oder 16 Datenleitungen brauche und wie ich das zu verdrahten habe.
2. Leider ist mir das ebenfalls nicht klar, was ich beim Display wo 
anschließen soll.
http://www.sainsmart.com/zen/documents/20-011-918/ITDB02_Graph16.rar
Hier gibts in der ITDB02_Graph16.pdf eine Pinbelegung.
3. Oder doch lieber seriell?
4. Kann mir jemand erklären, in wie fern die Informationen aus dem 
Datenblatt des eigentlichen Controllers des TFT, dem SSD1289, hilfreich 
beim ansteuern sind? Z.b. Befinden sich im Datenblatt auf Seite 19
-> 
http://www.gpegint.com/files/library/files/supportpdf/Driver%20IC%20SSD1289.pdf
Pinbelegeungen für P0-P3 mit denene man das Interface einstellen kann 
mit dem man den TFT ansteuern will. Ich habe aber keine Pinne P0-P3 an 
meinem Display, also wie soll ich das Interface einstellen?

Ich hoffe ihr könnt mir helfen!

Schönen Sonntag noch =)

von Wayson (Gast)


Lesenswert?

!PUSH!

Keiner eine Idee? Der TFT ist doch sehr verbeitet.

von Kibibyte (Gast)


Lesenswert?

Hi,

1.& 2. Du brauchst 16 Datenleitungen:

void LCD_Writ_Bus(char VH,char VL)   //Write Data
{
    LCD_DataPortH=VH;
    LCD_DataPortL=VL;
    CLR_WR;
    SET_WR;
}

VH: High Byte MSB D15 ... D8 LSB (DB15 bis DB8 am Display)
LH: Low Byte  MSB D7  ... D0 LSB (DB7 bis DB0 am Display)

Am Xmega werden die Ports E und D dafür genutzt:

#define  LCD_DataPortH   PORTE.OUT
#define  LCD_DataPortL   PORTD.OUT

Und 4 Steuerleitungen:

#define  LCD_RS  PIN7   //  Command (DC for Parallel Interface)
#define  LCD_WR  PIN6   //  RW (read an write cycle indicator)
#define  LCD_CS  PIN3   //  Chip Select
#define  LCD_RES PIN2   //  RESET

// macros for control lines
#define CLR_RS PORTC.OUT &= ~(1<<LCD_RS);
#define SET_RS PORTC.OUT |=  (1<<LCD_RS);

#define CLR_CS PORTC.OUT &= ~(1<<LCD_CS);
#define SET_CS PORTC.OUT |=  (1<<LCD_CS);

#define CLR_RESET PORTC.OUT &= ~(1<<LCD_RES);
#define SET_RESET PORTC.OUT |=  (1<<LCD_RES);

#define CLR_WR PORTC.OUT &= ~(1 << LCD_WR);
#define SET_WR PORTC.OUT |=  (1 << LCD_WR);
#define CLR_RD PORTC.OUT &= ~(1 << LCD_RD);
#define SET_RD PORTC.OUT |=  (1 << LCD_RD);

RS, WR, CS und RESET gibts auch am Display: RS->Pin 4, WR->Pin 5, 
CS->Pin 15 und RESET->PIN17. Für die Steuerleitungen wird der Port C des 
Xmegas genutzt.

Die Pins 29 - 34 sind für den ADS7843 der das Touchpanel digitalisiert 
und die Daten übers SPI raushaut.

Die Pins 35 - 38 sind für die SD Karte, also auch SPI.

F_CS, F_WP und F_Hold kann ich leider nicht zuordnen.

3.&4. Es sieht aus, als wenn das Display nur im 16Bit-parallel-Modus 
betreiben könnte. Infos übers Timing etc. sollten im Datenblatt stehen.

Gruß

von Wayson (Gast)


Lesenswert?

Hey,

danke für die Antwort!

Ich habe das bereits genau so angeschlossen aber bisher keine Reaktion 
auf dem TFT. Was genau soll ich denn bei VH und VL für chars reingeben?
Ich habe leider auch keine Ahnung wie ich das mit dem Timing hinbekommen 
soll...

von Thomas F. (igel)


Lesenswert?

> Ich habe das bereits genau so angeschlossen aber bisher
> keine Reaktion auf dem TFT.

Hintergrundbeleuchtung bestromt?

Der SSD1289 muss natürlich initialisiert werden. Dazu findest du in dem 
von dir genannten Archiv ja auch eine LCD_init-Funktion.

http://www.sainsmart.com/zen/documents/20-011-918/ITDB02_Graph16.rar

> Was genau soll ich denn bei VH und VL für chars reingeben?

Es ist ein graphisches LCD. Wenn du ein Char anzeigen willst, musst du 
schon die passenden Pixel einzeln auf dem Display setzen.

Die von Kibibyte beschriebene Funktion ist nur die rudimentäre 
Übertragungsfunktion für 16 Datenbits zum LCD.

von Wayson (Gast)


Lesenswert?

Vielen Dank!

Init Funktion habe ich aufgerufen und Hintergrund leuchtet.
Habe im Moment wenig Zeit. Teste es bald möglich und melde mich wieder.

Gruß

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.