/* E78RA-I-MW950-CB MIPI DSI TFT Display Driver File Created on February 5, 2026, 3:46 PM @Company Focus LCDs LCDs Made Simple www.focuslcds.com @File Name E78RA-I-MW950-CB-3LANE-MIPI-CODE.txt @Summary This is the driver source file for the TFT Display Display: 7.8" TFT LCD 400 x 1280 Controller Chip: GC9703C Interface: MIPI DSI 3-Lane MCU/MPU: Generic @Version Version 1.0.0 (Semantic Versioning 2.0.0) @Description This source file provides initialization for the 7.8" 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. *******************************************************************************/ /* JDEVB_RSOX(400); JDEVB_RSOY(1280); JDEVB_VS(10); JDEVB_VBP(34); JDEVB_VFP(20); JDEVB_HS(10); JDEVB_HBP(30); JDEVB_HFP(56); JDEVB_DSILANE(4);//DSI Lane params->RGB_CLOCK=(40)M Frame Rate=60HZ //************************* void initi(void) { res=1; delay(1); res=0; delay(10); res=1; delay(120); //******************************// write_command(0xD7); write_data(0x61); write_data(0x74); write_data(0x97); write_command(0xD0); write_data(0x10); write_command(0x60); write_data(0xff); write_command(0x61); write_data(0xff); write_command(0x62); write_data(0xff); write_command(0x63); write_data(0xff); write_command(0x64); write_data(0xff); write_command(0x65); write_data(0xff); write_command(0x66); write_data(0xff); write_command(0x67); write_data(0xff); write_command(0x68); write_data(0xff); write_command(0x69); write_data(0xff); write_command(0x6A); write_data(0xff); write_command(0x6B); write_data(0xff); write_command(0x6C); write_data(0xff); write_command(0x6D); write_data(0xff); write_command(0x6E); write_data(0xff); write_command(0x6F); write_data(0xff); write_command(0xA9); write_data(0x93); write_command(0xA8); write_data(0x09); write_command(0xF5); write_data(0xb4); write_command(0xFD); write_data(0x5B);//VCOM write_command(0x9D); write_data(0xAA); write_command(0x99); write_data(0x8D);//POWER IC FOR NV7052 write_command(0x9A); write_data(0xD0);//POWER IC FOR NV7052 write_command(0xA5); write_data(0x00); write_command(0xAE); write_data(0x70); //70 -3lane 71-4lane write_command(0xC1); write_data(0xC0); write_command(0xB8); write_data(0x04); write_data(0xFF); write_command(0xB6); write_data(0x22);//Forward scan: 0x22 ;backward scan: 0x11 write_command(0xB7); write_data(0x30); write_command(0x92); write_data(0x2C); write_data(0x28); write_data(0x58); write_data(0x50); write_command(0xD0); write_data(0x11); write_command(0x60); write_data(0xff); write_command(0x61); write_data(0xff); write_command(0x62); write_data(0xff); write_command(0x63); write_data(0xff); write_command(0x64); write_data(0xff); write_command(0x65); write_data(0xff); write_command(0x66); write_data(0xff); write_command(0x67); write_data(0xff); write_command(0x68); write_data(0xff); write_command(0x69); write_data(0xff); write_command(0x6A); write_data(0xff); write_command(0x6B); write_data(0xff); write_command(0x6C); write_data(0xff); write_command(0x6D); write_data(0xff); write_command(0xB8); write_data(0x0f); write_command(0xB9); write_data(0xff); write_command(0xBA); write_data(0x8f); write_command(0xB3); write_data(0x36); write_data(0x37); write_data(0x3B); write_data(0x3E); write_data(0x0D); write_data(0x0F); write_data(0x09); write_data(0x0b); write_data(0x34); write_data(0x3A); write_data(0x01); write_data(0x03); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x36); write_data(0x37); write_data(0x3B); write_data(0x3E); write_data(0x0C); write_data(0x0E); write_data(0x08); write_data(0x0A); write_data(0x34); write_data(0x3A); write_data(0x00); write_data(0x02); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3F); write_data(0x3f); write_command(0xB7); write_data(0x07); write_command(0xBC); write_data(0x00); write_data(0x0F); write_command(0xA0); write_data(0x30); write_data(0x04); write_data(0x6A); write_data(0x6A); write_data(0x30); write_data(0x06); write_data(0x6A); write_data(0x6A); write_command(0xA1); write_data(0x30); write_data(0x04); write_data(0x6A); write_data(0x6A); write_data(0x30); write_data(0x06); write_data(0x6A); write_data(0x6A); write_command(0xA3); write_data(0x35); write_data(0xC2); write_data(0x1A); write_data(0x68); write_data(0x30); write_data(0x00); write_data(0x05); write_data(0x13); write_data(0x6A); write_data(0x6A); write_command(0xA7); write_data(0x33); write_data(0x5a); write_data(0x5a); write_data(0x5a); write_data(0x5a); write_command(0xA8); write_data(0x00); write_data(0x08); write_data(0x05); write_data(0x10); write_data(0x00); write_data(0x00); write_data(0x08); write_data(0x05); write_data(0x10); write_data(0x10); write_command(0xBD); write_data(0x05); write_data(0x28); write_data(0x07); write_data(0x05); write_data(0x28); write_data(0x07); write_command(0xC3); write_data(0x1A); write_command(0xE5); write_data(0x02); write_command(0xF8); write_data(0x29); write_command(0xAC); write_data(0x91); write_command(0xF4); write_data(0xFF); write_command(0xF5); write_data(0x00); write_command(0xF6); write_data(0xFF); write_command(0xF7); write_data(0x00); write_command(0xD0); write_data(0x12); write_command(0x80); write_data(0x00); write_data(0x3A); write_data(0x00); write_data(0x3D); write_data(0x00); write_data(0x45); write_data(0x00); write_data(0x6A); write_data(0x00); write_data(0x80); write_data(0x00); write_data(0x95); write_data(0x00); write_data(0xA8); write_data(0x00); write_data(0xB7); write_command(0x81); write_data(0x00); write_data(0xC6); write_data(0x00); write_data(0xf6); write_data(0x01); write_data(0x18); write_data(0x01); write_data(0x47); write_data(0x01); write_data(0x6C); write_data(0x01); write_data(0xA7); write_data(0x01); write_data(0xDC); write_data(0x01); write_data(0xDE); write_command(0x82); write_data(0x02); write_data(0x19); write_data(0x02); write_data(0x65); write_data(0x02); write_data(0x9A); write_data(0x02); write_data(0xDC); write_data(0x03); write_data(0x04); write_data(0x03); write_data(0x36); write_data(0x03); write_data(0x47); write_data(0x03); write_data(0x58); write_command(0x83); write_data(0x03); write_data(0x6C); write_data(0x03); write_data(0x82); write_data(0x03); write_data(0x9A); write_data(0x03); write_data(0xB7); write_data(0x03); write_data(0xE2); write_data(0x03); write_data(0xFF); write_command(0x84); write_data(0x00); write_data(0x3A); write_data(0x00); write_data(0x3D); write_data(0x00); write_data(0x45); write_data(0x00); write_data(0x6A); write_data(0x00); write_data(0x80); write_data(0x00); write_data(0x95); write_data(0x00); write_data(0xA8); write_data(0x00); write_data(0xB7); write_command(0x85); write_data(0x00); write_data(0xC6); write_data(0x00); write_data(0xf6); write_data(0x01); write_data(0x18); write_data(0x01); write_data(0x47); write_data(0x01); write_data(0x6C); write_data(0x01); write_data(0xA7); write_data(0x01); write_data(0xDC); write_data(0x01); write_data(0xDE); write_command(0x86); write_data(0x02); write_data(0x19); write_data(0x02); write_data(0x65); write_data(0x02); write_data(0x9A); write_data(0x02); write_data(0xDC); write_data(0x03); write_data(0x04); write_data(0x03); write_data(0x36); write_data(0x03); write_data(0x47); write_data(0x03); write_data(0x58); write_command(0x87); write_data(0x03); write_data(0x6C); write_data(0x03); write_data(0x82); write_data(0x03); write_data(0x9A); write_data(0x03); write_data(0xB7); write_data(0x03); write_data(0xE2); write_data(0x03); write_data(0xFF); write_command(0x88); write_data(0x00); write_data(0x3A); write_data(0x00); write_data(0x3D); write_data(0x00); write_data(0x45); write_data(0x00); write_data(0x6A); write_data(0x00); write_data(0x80); write_data(0x00); write_data(0x95); write_data(0x00); write_data(0xA8); write_data(0x00); write_data(0xB7); write_command(0x89); write_data(0x00); write_data(0xC6); write_data(0x00); write_data(0xf6); write_data(0x01); write_data(0x18); write_data(0x01); write_data(0x47); write_data(0x01); write_data(0x6C); write_data(0x01); write_data(0xA7); write_data(0x01); write_data(0xDC); write_data(0x01); write_data(0xDE); write_command(0x8A); write_data(0x02); write_data(0x19); write_data(0x02); write_data(0x65); write_data(0x02); write_data(0x9A); write_data(0x02); write_data(0xDC); write_data(0x03); write_data(0x04); write_data(0x03); write_data(0x36); write_data(0x03); write_data(0x47); write_data(0x03); write_data(0x58); write_command(0x8B); write_data(0x03); write_data(0x6C); write_data(0x03); write_data(0x82); write_data(0x03); write_data(0x9A); write_data(0x03); write_data(0xB7); write_data(0x03); write_data(0xE2); write_data(0x03); write_data(0xFF); write_command(0x90); write_data(0x00); write_data(0x1A); write_data(0x00); write_data(0x1D); write_data(0x00); write_data(0x4A); write_data(0x00); write_data(0x6A); write_data(0x00); write_data(0x80); write_data(0x00); write_data(0x95); write_data(0x00); write_data(0xA8); write_data(0x00); write_data(0xB7); write_command(0x91); write_data(0x00); write_data(0xC6); write_data(0x00); write_data(0xf6); write_data(0x01); write_data(0x18); write_data(0x01); write_data(0x47); write_data(0x01); write_data(0x6C); write_data(0x01); write_data(0xA7); write_data(0x01); write_data(0xDC); write_data(0x01); write_data(0xDE); write_command(0x92); write_data(0x02); write_data(0x19); write_data(0x02); write_data(0x65); write_data(0x02); write_data(0x9A); write_data(0x02); write_data(0xDC); write_data(0x03); write_data(0x04); write_data(0x03); write_data(0x36); write_data(0x03); write_data(0x47); write_data(0x03); write_data(0x58); write_command(0x93); write_data(0x03); write_data(0x6C); write_data(0x03); write_data(0x82); write_data(0x03); write_data(0x9A); write_data(0x03); write_data(0xB7); write_data(0x03); write_data(0xE2); write_data(0x03); write_data(0xFF); write_command(0x94); write_data(0x00); write_data(0x1A); write_data(0x00); write_data(0x1D); write_data(0x00); write_data(0x4A); write_data(0x00); write_data(0x6A); write_data(0x00); write_data(0x80); write_data(0x00); write_data(0x95); write_data(0x00); write_data(0xA8); write_data(0x00); write_data(0xB7); write_command(0x95); write_data(0x00); write_data(0xC6); write_data(0x00); write_data(0xf6); write_data(0x01); write_data(0x18); write_data(0x01); write_data(0x47); write_data(0x01); write_data(0x6C); write_data(0x01); write_data(0xA7); write_data(0x01); write_data(0xDC); write_data(0x01); write_data(0xDE); write_command(0x96); write_data(0x02); write_data(0x19); write_data(0x02); write_data(0x65); write_data(0x02); write_data(0x9A); write_data(0x02); write_data(0xDC); write_data(0x03); write_data(0x04); write_data(0x03); write_data(0x36); write_data(0x03); write_data(0x47); write_data(0x03); write_data(0x58); write_command(0x97); write_data(0x03); write_data(0x6C); write_data(0x03); write_data(0x82); write_data(0x03); write_data(0x9A); write_data(0x03); write_data(0xB7); write_data(0x03); write_data(0xE2); write_data(0x03); write_data(0xFF); write_command(0x98); write_data(0x00); write_data(0x1A); write_data(0x00); write_data(0x1D); write_data(0x00); write_data(0x4A); write_data(0x00); write_data(0x6A); write_data(0x00); write_data(0x80); write_data(0x00); write_data(0x95); write_data(0x00); write_data(0xA8); write_data(0x00); write_data(0xB7); write_command(0x99); write_data(0x00); write_data(0xC6); write_data(0x00); write_data(0xf6); write_data(0x01); write_data(0x18); write_data(0x01); write_data(0x47); write_data(0x01); write_data(0x6C); write_data(0x01); write_data(0xA7); write_data(0x01); write_data(0xDC); write_data(0x01); write_data(0xDE); write_command(0x9A); write_data(0x02); write_data(0x19); write_data(0x02); write_data(0x65); write_data(0x02); write_data(0x9A); write_data(0x02); write_data(0xDC); write_data(0x03); write_data(0x04); write_data(0x03); write_data(0x36); write_data(0x03); write_data(0x47); write_data(0x03); write_data(0x58); write_command(0x9B); write_data(0x03); write_data(0x6C); write_data(0x03); write_data(0x82); write_data(0x03); write_data(0x9A); write_data(0x03); write_data(0xB7); write_data(0x03); write_data(0xE2); write_data(0x03); write_data(0xFF); write_command(0x36); write_data(0x08); write_command0x11);//sleep out delay_ms(120); write_command0x29); //display on } //******************************************* void EnterSleep (void) { write_command(0x28); delay(10); write_command(0x10); } //********************************************************* void ExitSleep (void) { write_command(0x11); delay(120); write_command(0x29); }