I have one custom base on stm32h750.
There is a intermittent flashing issue.
if disable cache by call “SCB_DisableDCache”, the issues go away.
if enable cache, add following code to clean cahce in the disp_flush function of lv_port_disp_template.c .
static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
int32_t x;
int32_t y;
x = area->x2 - area->x1 +1;
y = area->y2 - area->y1 +1;
SCB_CleanDCache();
if(disable_flush == 0)
{
_DMA2D_Copy((void *)(color_p),
(void *)(EXT_SDRAM_ADDR+disp_drv->hor_res*area->y1*2+ area->x1*2),
x,
y,
0,
disp_drv->hor_res - x,
LTDC_PIXEL_FORMAT_RGB565);
}
/*IMPORTANT!!!
*Inform the graphics library that you are ready with the flushing*/
lv_disp_flush_ready(disp_drv);
}
I still see the issues.
the lvgl memory info is following:
C0000000-C012C000 LCD Framebuffer
C0400000-C0800000 LVGL LV_MEM_ADR Range.
C0800000-C0920000 LVGL draw Buffer|
Can someone help analyze the true cause of this problem?
Thanks very much!