/* E43GB-I-MW405-C MIPI DSI TFT Display Driver File Created on January 15, 2024, 11:30 AM @Company Focus LCDs LCDs Made Simple www.focuslcds.com @File Name E43GB-I-MW405-C_init.c @Summary This is the driver source file for the TFT Display Display: 4.3" TFT LCD 480 x 800 Controller Chip: ILI9806E Interface: MIPI DSI 2-Lane MCU/MPU: Generic @Version Version 1.0.1 (Semantic Versioning 2.0.0) @Description This source file provides initialization for the 4.3" TFT display. */ /*******************************************************************************/ /******************************************************************************* (c) 2023 Focus LCDs and its subsidiaries. You may use this software and any derivatives exclusively with Focus LCDs products. THIS SOFTWARE IS SUPPLIED BY FOCUS LCDS "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE, OR ITS INTERACTION WITH FOCUS LCDS PRODUCTS, COMBINATION WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION. IN NO EVENT WILL FOCUS LCDS BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF FOCUS LCDS HAS BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW, FOCUS LCDS' TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO FOCUSLCDS FOR THIS SOFTWARE. FOCUS LCDS PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF THESE TERMS. *******************************************************************************/ /****************************************************************************** NOTES: Driver Voltages: VCI = 3.3V,IOVCC = 1.8V Display Resolution: 480 * 800 DSI Vertical Sync Active = 4 DSI Vertical Backporch = 20 DSI Vertical Frontporch = 10 DSI Horizontal Sync Active = 4 DSI Horizontal Backporch = 10 DSI Horizontal Frontporch = 45 DSI PLL_CLOCK = 500 MHz RGB_CLOCK = 40 MHZ Frame Rate = 60HZ *******************************************************************************/ // *** Initialize the ILI9806E/E43GB-I-MW405-C ******************************** void LCD_Init(void) { RST=1; // Set the RESET pin high delay(1) // 1 mS delay RST=0; delay(10); // 10 mS RST=1; delay(120); // 120mS write_command(0xFF); // switch to Page1 write_data(0xFF); write_data(0x98); write_data(0x06); write_data(0x04); write_data(0x01); delay(10); write_command(0x03); delay(50); write_command(0xFF); // switch to Page1 write_data(0xFF); write_data(0x98); write_data(0x06); write_data(0x04); write_data(0x01); delay(50); write_command(0x08);// IFMOD SDO always output/SDA write_data(0x10); write_command(0x20); write_data(0x00); write_command(0x21);// DE = 1 EN/PCLK Rise/HSYNC = 0/VSYNC = 0 write_data(0x01); write_command(0x30);// 480 x 800 write_data(0x02); write_command(0x31);// Column inversion write_data(0x00); write_command(0x40);// VCI2x/Output2x/Internal charge pump write_data(0x14); write_command(0x41);// +5.2V/-5.2V write_data(0x33); write_command(0x42);// VGL= DDVDH + VCIP - DDVDL, VGH=2DDVDL-VCIP write_data(0x01); write_command(0x43);// VGH +15V Disabled write_data(0x09); write_command(0x44); write_data(0x09); write_command(0x45); write_data(0x0A); write_command(0x50);// VREG1 write_data(0x78); write_command(0x51);// VREG2 write_data(0x78); write_command(0x52); write_data(0x00); write_command(0x53);// Forward Flicker VCOM write_data(0x3A); write_command(0x54);// VCOM write_data(0x00); write_command(0x55);// Backward Flicker VCOM write_data(0x3A); write_command(0x57); write_data(0x50); write_command(0x60); write_data(0x07); write_command(0x61); write_data(0x06); write_command(0x62); write_data(0x06); write_command(0x63); write_data(0x04); // Positive Gamma write_command(0xA0); write_data(0x00); write_command(0xA1); write_data(0x13); write_command(0xA2); write_data(0x19); write_command(0xA3); write_data(0x0C); write_command(0xA4); write_data(0x06); write_command(0xA5); write_data(0x0A); write_command(0xA6); write_data(0x06); write_command(0xA7); write_data(0x04); write_command(0xA8); write_data(0x09); write_command(0xA9); write_data(0x08); write_command(0xAA); write_data(0x12); write_command(0xAB); write_data(0x06); write_command(0xAC); write_data(0x0E); write_command(0xAD); write_data(0x0E); write_command(0xAE); write_data(0x09); write_command(0xAF); write_data(0x00); // Negative Gamma write_command(0xC0); write_data(0x00); write_command(0xC1); write_data(0x0D); write_command(0xC2); write_data(0x18); write_command(0xC3); write_data(0x0D); write_command(0xC4); write_data(0x06); write_command(0xC5); write_data(0x09); write_command(0xC6); write_data(0x07); write_command(0xC7); write_data(0x05); write_command(0xC8); write_data(0x08); write_command(0xC9); write_data(0x0E); write_command(0xCA); write_data(0x12); write_command(0xCB); write_data(0x09); write_command(0xCC); write_data(0x0E); write_command(0xCD); write_data(0x0E); write_command(0xCE); write_data(0x08); write_command(0xCF); write_data(0x00); write_command(0xFF); // switch to Page6 write_data(0xFF); write_data(0x98); write_data(0x06); write_data(0x04); write_data(0x06); // GIP Timing write_command(0x00); write_data(0x20); write_command(0x01); write_data(0x04); write_command(0x02); write_data(0x00); write_command(0x03); write_data(0x00); write_command(0x04); write_data(0x01); write_command(0x05); write_data(0x01); write_command(0x06); write_data(0x88); write_command(0x07); write_data(0x04); write_command(0x08); write_data(0x01); write_command(0x09); write_data(0x90); write_command(0x0A); write_data(0x03); write_command(0x0B); write_data(0x01); write_command(0x0C); write_data(0x01); write_command(0x0D); write_data(0x01); write_command(0x0E); write_data(0x00); write_command(0x0F); write_data(0x00); write_command(0x10); write_data(0x55); write_command(0x11); write_data(0x53); write_command(0x12); write_data(0x01); write_command(0x13); write_data(0x0D); write_command(0x14); write_data(0x0D); write_command(0x15); write_data(0x43); write_command(0x16); write_data(0x0B); write_command(0x17); write_data(0x00); write_command(0x18); write_data(0x00); write_command(0x19); write_data(0x00); write_command(0x1A); write_data(0x00); write_command(0x1B); write_data(0x00); write_command(0x1C); write_data(0x00); write_command(0x1D); write_data(0x00); write_command(0x20); write_data(0x01); write_command(0x21); write_data(0x23); write_command(0x22); write_data(0x45); write_command(0x23); write_data(0x67); write_command(0x24); write_data(0x01); write_command(0x25); write_data(0x23); write_command(0x26); write_data(0x45); write_command(0x27); write_data(0x67); write_command(0x30); write_data(0x02); write_command(0x31); write_data(0x22); write_command(0x32); write_data(0x11); write_command(0x33); write_data(0xAA); write_command(0x34); write_data(0xBB); write_command(0x35); write_data(0x66); write_command(0x36); write_data(0x00); write_command(0x37); write_data(0x22); write_command(0x38); write_data(0x22); write_command(0x39); write_data(0x22); write_command(0x3A); write_data(0x22); write_command(0x3B); write_data(0x22); write_command(0x3C); write_data(0x22); write_command(0x3D); write_data(0x22); write_command(0x3E); write_data(0x22); write_command(0x3F); write_data(0x22); write_command(0x40); write_data(0x22); write_command(0x52); write_data(0x10); write_command(0x53); write_data(0x12); write_command(0x54); write_data(0x13); write_command(0xFF); // switch to Page7 write_data(0xFF); write_data(0x98); write_data(0x06); write_data(0x04); write_data(0x07); write_command(0x17); write_data(0x32); write_command(0x18); write_data(0x1D); write_command(0x26); write_data(0xB2); write_command(0x02); write_data(0x77); write_command(0xE1); write_data(0x79); write_command(0xB3); write_data(0x10); write_command(0xFF); // switch to Page0 write_data(0xFF); write_data(0x98); write_data(0x06); write_data(0x04); write_data(0x00); write_command(0x36); write_data(0x02); write_command(0x3A); write_data(0x70); write_command(0x11); // Sleep Out delay(300); write_command(0x29); // Display On delay(50); } // *** Enter Sleep Mode **************************************************** void EnterSleep (void) { write_command(0x28); delay(10); write_command(0x10); } // *** Exit Sleep Mode ***************************************************** void ExitSleep (void) { write_command(0x11); delay(120); write_command(0x29); }