2025-03-13 5:46 AM
I port GuiLite on my board with stm32h7, when I develop with multi layer app, I found when I use DMA2A to transfer data on two layers. the screen get some blink like.
video_down_load_link:https://img.nickyam.com/file/BAACAgUAAyEGAASS2zT1AAIChGfS0ygzo2_DOJzfenk8GhO85HxiAAKSFwACqduRVpJFr-w2KqwkNgQ.mp4
the releate code as below
HAL_LTDC_SetAddress_NoReload(&hltdc, (uint32_t)fb, LTDC_LAYER_1);
HAL_LTDC_Reload(&hltdc, LTDC_RELOAD_VERTICAL_BLANKING);
g_ltdc_sem4sync.value = 1;
while(g_ltdc_sem4sync.value);
thread_sleep(1000);
int ret;
ret = HAL_DMA2D_Start(&hdma2d, (uint32_t)fb + (current_active_rect.m_top * 800 + current_active_rect.m_left) * 4, (uint32_t)m_fb + (current_active_rect.m_top * 800 + current_active_rect.m_left) * 4, current_active_rect.width(), current_active_rect.height());
I wonder how could this happen ?