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); }
Schau doch in die Adafruit Library wo der Unterschied in der Initialisierung liegt ;) EDIT: https://github.com/adafruit/Adafruit_ILI9341/blob/master/Adafruit_ILI9341.cpp
:
Bearbeitet durch User
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.