ili9341 initialisieren

Gast #4464181
Lesenswert?
• ▲
▼
Hallo beste Community,

seit Tagen versuche ich mein adfruit ili9341 zu initialisieren aber es 
tut sich einfach gar nichts. erklärt sich jemand bereit einen kurzen 
blick drüber zu werfen, ob denn evtl. ein grober schnitzer zu erkennen 
ist?

vielen dank im voraus

void UTFT::InitLCD(void)
{
//   DDRF |= (1<<PF0);
//   PORTF |= (1<<PF0);

  TCCR2A = (1 << COM2A1) |  (1 << WGM20);
  TCCR2A = (1 << CS21);            // clock source = CLK/8, start PWM
  setBrightness(255);

  //Reset Pin 4 (Mega Board: Port G, Pin 5)
  // Data Direction = output;
  //DDRG |= 0x20;

  //CS Pin 5 -- (Mega Borad: port E , pin 3)
  DDRB |= (1<<PB0);
  // DC Pin 6 -- (Port H, Pin 3)
  DDRA |= (1<<PA0);
  SPI.SPI_init();
  CS_TFT_HIGH;
  DC_TFT_HIGH;
  _delay_ms(1); //alter Wert 100


  LCD_Write_COM(0xCB);    //power control A
  LCD_Write_DATA(0x39);
  LCD_Write_DATA(0x2C);
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x34);
  LCD_Write_DATA(0x02);

  LCD_Write_COM(0xCF);    //power control B
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0XC1);
  LCD_Write_DATA(0X30);

  LCD_Write_COM(0xE8);
  LCD_Write_DATA(0x85);
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x78);

  LCD_Write_COM(0xEA);
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x00);

  LCD_Write_COM(0xED);
  LCD_Write_DATA(0x64);
  LCD_Write_DATA(0x03);
  LCD_Write_DATA(0X12);
  LCD_Write_DATA(0X81);

  LCD_Write_COM(0xF7);
  LCD_Write_DATA(0x20);

  LCD_Write_COM(0xC0);      //Power control
  LCD_Write_DATA(0x23);     //VRH[5:0]

  LCD_Write_COM(0xC1);      //Power control
  LCD_Write_DATA(0x10);     //SAP[2:0];BT[3:0]

  LCD_Write_COM(0xC5);      //VCM control
  LCD_Write_DATA(0x3e);     //Contrast
  LCD_Write_DATA(0x28);

  LCD_Write_COM(0xC7);      //VCM control2
  LCD_Write_DATA(0x86);     //--


// Memory Access Control
// [MY]  [MX]  [MV]  [ML]  [BGR]  [MH]  0  0
//  0  1    0    0    1    0    0  0    = 48
//  0  1    0    1    1    0    0  0    = 58
  LCD_Write_COM(0x36);
  LCD_Write_DATA(0x48);
  //writeData(0x58);

  LCD_Write_COM(0x3A);
  LCD_Write_DATA(0x55);

  LCD_Write_COM(0xB1);
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x18);// 79Hz
  //writeData(0x13); //100 hz

  LCD_Write_COM(0xB6);      // Display Function Control
  LCD_Write_DATA(0x08);
  LCD_Write_DATA(0x82);
  LCD_Write_DATA(0x27);

  LCD_Write_COM(0xF2);      // 3Gamma Function Disable
  LCD_Write_DATA(0x00);

  LCD_Write_COM(0x26);      //Gamma curve selected
  LCD_Write_DATA(0x01);

  LCD_Write_COM(0xE0);      //Set Gamma
  LCD_Write_DATA(0x0F);
  LCD_Write_DATA(0x31);
  LCD_Write_DATA(0x2B);
  LCD_Write_DATA(0x0C);
  LCD_Write_DATA(0x0E);
  LCD_Write_DATA(0x08);
  LCD_Write_DATA(0x4E);
  LCD_Write_DATA(0xF1);
  LCD_Write_DATA(0x37);
  LCD_Write_DATA(0x07);
  LCD_Write_DATA(0x10);
  LCD_Write_DATA(0x03);
  LCD_Write_DATA(0x0E);
  LCD_Write_DATA(0x09);
  LCD_Write_DATA(0x00);

  LCD_Write_COM(0xE1);      //Set Gamma
  LCD_Write_DATA(0x00);
  LCD_Write_DATA(0x0E);
  LCD_Write_DATA(0x14);
  LCD_Write_DATA(0x03);
  LCD_Write_DATA(0x11);
  LCD_Write_DATA(0x07);
  LCD_Write_DATA(0x31);
  LCD_Write_DATA(0xC1);
  LCD_Write_DATA(0x48);
  LCD_Write_DATA(0x08);
  LCD_Write_DATA(0x0F);
  LCD_Write_DATA(0x0C);
  LCD_Write_DATA(0x31);
  LCD_Write_DATA(0x36);
  LCD_Write_DATA(0x0F);

  LCD_Write_COM(0x11);      //Exit Sleep
  _delay_ms(120);

  LCD_Write_COM(0x29);    //Display on
  LCD_Write_COM(0x2c);

}
#4464236
Lesenswert?
• ▲
▼
Hallo,

ich hatte mir mal nen "Treiber" für nen STM32 mit dem besagten IlI9341 
Chip geschrieben. Bei mir sind es die billigen Ali Express LCDs die 
damit angesteuert werden.
Mag sein das der nicht mega sauber programmiert ist, aber was mir in 
Erinnerung geblieben ist, ist das ich an bestimmten Stellen noch ein 
paar takte warten musste (delays einfügen musste) bevor es weiter ging.

Ich hänge dir mal meinen Code an. Vielleicht kannste was damit anfangen.

Viele Grüße,
Willem.
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.