Hello,
Thank you for your question.
I'm note sure which library you are referring to when you mention the EVE 'Lite' Library. However you can find a standard EVE initialization sequence below:
MCU_PDlow(); // PD low to reset device
MCU_Delay_20ms();
MCU_PDhigh(); // PD high again
MCU_Delay_20ms();
// ---------------------- Delay to allow FT81x start-up --------------------
EVE_CmdWrite(FT81x_ACTIVE, 0x00); // Sends 00 00 00 to wake FT8xx
MCU_Delay_500ms(); // 500ms delay (EVE requires at least 300ms here))
// --------------- Check that FT8xx ready and SPI comms OK -----------------
while (EVE_MemRead8(REG_ID) != 0x7C) // Read REG_ID register until reads 0x7C
{
}
while (EVE_MemRead8(REG_CPURESET) != 0x00) // Ensure CPUreset register reads 0 and so FT8xx is ready
{
}
// ------------------------- Display settings ------------------------------
// WQVGA display parameters
lcdWidth = 800; // Active width of LCD display
lcdHeight = 480; // Active height of LCD display
lcdHcycle = 928; // Total number of clocks per line
lcdHoffset = 88; // Start of active line
lcdHsync0 = 0; // Start of horizontal sync pulse
lcdHsync1 = 48; // End of horizontal sync pulse
lcdVcycle = 525; // Total number of lines per screen
lcdVoffset = 32; // Start of active screen
lcdVsync0 = 0; // Start of vertical sync pulse
lcdVsync1 = 3; // End of vertical sync pulse
lcdPclk = 2; // Pixel Clock
lcdSwizzle = 0; // Define RGB output pins
lcdPclkpol = 1; // Define active edge of PCLK
EVE_MemWrite16(REG_HSIZE, lcdWidth);
EVE_MemWrite16(REG_HCYCLE, lcdHcycle);
EVE_MemWrite16(REG_HOFFSET, lcdHoffset);
EVE_MemWrite16(REG_HSYNC0, lcdHsync0);
EVE_MemWrite16(REG_HSYNC1, lcdHsync1);
EVE_MemWrite16(REG_VSIZE, lcdHeight);
EVE_MemWrite16(REG_VCYCLE, lcdVcycle);
EVE_MemWrite16(REG_VOFFSET, lcdVoffset);
EVE_MemWrite16(REG_VSYNC0, lcdVsync0);
EVE_MemWrite16(REG_VSYNC1, lcdVsync1);
EVE_MemWrite8(REG_SWIZZLE, lcdSwizzle);
EVE_MemWrite8(REG_PCLK_POL, lcdPclkpol);
// ---------------------- Touch and Audio settings -------------------------
EVE_MemWrite16(REG_TOUCH_RZTHRESH, 1200); // Eliminate any false touches
EVE_MemWrite8(REG_VOL_PB, ZERO); // turn recorded audio volume down
EVE_MemWrite8(REG_VOL_SOUND, ZERO); // turn volume down
EVE_MemWrite16(REG_SOUND, 0x6000); // set volume mute
// ---------------- Configure the GPIO and PWM --------------------
EVE_MemWrite8(REG_PWM_DUTY, 0); // Backlight off
FT81x_GPIO_DAT = EVE_MemRead16(REG_GPIOX); // Read the FT81x GPIO register for a read/modify/write operation
FT81x_GPIO_DAT = FT81x_GPIO_DAT | 0x8000; // set bit 15 of GPIO register (DISP). If using audio, also enable the amplifier shutdown GPIO line here
EVE_MemWrite16(REG_GPIOX, FT81x_GPIO_DAT); // Enable the DISP signal to the LCD panel
FT81x_GPIO_DIR = EVE_MemRead16(REG_GPIOX_DIR); // Read the FT81x GPIO DIR register for a read/modify/write operation
FT81x_GPIO_DIR = FT81x_GPIO_DIR | 0x8000; // DISP is output, if using audio, also set the associated shutdown line as output (check your Eval module schematic))
EVE_MemWrite16(REG_GPIOX_DIR, FT81x_GPIO_DIR); // Enable the DISP signal to the LCD panel
// ---------------------- Create an initial screen before we enable the display -------------------------
ramDisplayList = RAM_DL; // start of Display List
EVE_MemWrite32(ramDisplayList, 0x02000000); // Clear Color RGB sets the colour to clear screen to
ramDisplayList += 4; // point to next location
EVE_MemWrite32(ramDisplayList, (0x26000000 | 0x00000007)); // Clear 00100110 -------- -------- -----CST (C/S/T define which parameters to clear)
ramDisplayList += 4; // point to next location
EVE_MemWrite32(ramDisplayList, 0x00000000); // DISPLAY command 00000000 00000000 00000000 00000000 (end of display list)
EVE_MemWrite32(REG_DLSWAP, DLSWAP_FRAME); // Swap display list to make the edited one active
// -------------------- Now turn on PCLK and ramp the PWM up -------------------------------------
// ---------------- This provides a clean start-up for the application ----------------------------
EVE_MemWrite8(REG_PCLK, lcdPclk); // Now start clocking data to the LCD panel
MCU_Delay_20ms();
for(PWM = 0; PWM <= 127; PWM ++)
{
EVE_MemWrite8(REG_PWM_DUTY, PWM);
MCU_Delay_20ms();
}
Note the "Create an initial screen before we enable the display" creates a blank display before issuing the first display list in your application to EVE, this should mitigate any screen 'glitches' seen after initialization.
Unfortunately however there are not registers available to detect whether or not the screen has already been initialized. I would suggest if your are using two separate libraries and these include two separate initialization sequences that you could check for a given value in one of the display registers (width for example) if this has already been written you could then abort the initialization code within the ESD library section of your application.
Best Regards,
BRT Community