hello every one,
i am using * STM32F469i-disco board
I already done the lvgl code part and that working well in my old borad.
i had bought 5 new board and not a single one is working no demo display on LCD.
Had somebuddy faced same issue?
or some issue with disco board lot?
or some changes in LCD lines?
hello arturv, i had checked board variant the board i used for development is B-01 and Now I have DK32F469I$AU1. I had tested the code not working in AU1
The board where I made the development (still have it inside the drawer…), was a B-02.
The first issue with Touch Driver having a different I2C address, i think it was with B-03 (not sure, don’t have any of them at the moment) and in this one the code would not work because the Touch I2C init function was “stupid” and would lockup in case the touch was not found (Don’t remember if it was a BSP issue or a TouchGfx initialization issue). The BSP now has a workaround where it attempts to auto-detect which I2C address it is…
ts_id1 = ft6x06_ts_drv.ReadID(TS_I2C_ADDRESS);
if(ts_id1 != FT6206_ID_VALUE)
{
ts_id2 = ft6x06_ts_drv.ReadID(TS_I2C_ADDRESS_A02);
I2C_Address = TS_I2C_ADDRESS_A02;
}
else
{
I2C_Address = TS_I2C_ADDRESS;
}
/* Scan FT6xx6 TouchScreen IC controller ID register by I2C Read */
/* Verify this is a FT6206 or FT6336G, otherwise this is an error case */
if((ts_id1 == FT6206_ID_VALUE) || (ts_id2 == FT6206_ID_VALUE) || (ts_id2 == FT6X36_ID2_VALUE))
{
The display change i think it came in Board B08/C01 (Product DK32F469I$AU1 version) where the display driver changed from OTM8009A to NT35510 which the latest BSP (at least in STM32Cube_FW_F4_V1.28.1) also already handles automatically:
Lcd_Driver_Type = LCD_ReadType(Lcd_Driver_Type);
BSP_LCD_Reset();
HAL_DSI_Stop(&hdsi_eval);
/* Timing parameters for all Video modes
* Set Timing parameters of LTDC depending on its chosen orientation
*/
if(orientation == LCD_ORIENTATION_PORTRAIT)
{
lcd_x_size = OTM8009A_480X800_WIDTH; /* 480 */
lcd_y_size = OTM8009A_480X800_HEIGHT; /* 800 */
}
else
{
/* lcd_orientation == LCD_ORIENTATION_LANDSCAPE */
lcd_x_size = OTM8009A_800X480_WIDTH; /* 800 */
lcd_y_size = OTM8009A_800X480_HEIGHT; /* 480 */
}
HACT = lcd_x_size;
VACT = lcd_y_size;
/* The following values are same for portrait and landscape orientations */
if (Lcd_Driver_Type == LCD_CTRL_NT35510)
{
VSA = NT35510_480X800_VSYNC;
VBP = NT35510_480X800_VBP;
VFP = NT35510_480X800_VFP;
HSA = NT35510_480X800_HSYNC;
HBP = NT35510_480X800_HBP;
HFP = NT35510_480X800_HFP;
}
else
{
VSA = OTM8009A_480X800_VSYNC;
VBP = OTM8009A_480X800_VBP;
VFP = OTM8009A_480X800_VFP;
HSA = OTM8009A_480X800_HSYNC;
HBP = OTM8009A_480X800_HBP;
HFP = OTM8009A_480X800_HFP;
}
And the variable Lcd_Driver_Type is used in other parts of the initialization code, the high level code (outside BSP) don’t need to know about this.
And yes, the current BSP Code, works either in a B02 board version or AU1 board (blue ones).
SDRAM and QSPI initialization it also use the BSP code, think there were changes in components but didn’t affect code.