cancel
Showing results for 
Search instead for 
Did you mean: 

LCD Freezes after running for a long time

S_1
Associate III

I am using TFT LCD + LTDC + STemWin in STM32F429IG with external SDRAM. I have enabled multi buffering to reduce the flickering effect. Then it works fine. But after a continuous run time of more than a day the system is running al the freertos task is running but the LCD display freezes. I have increased the memory of STemWin but still the problem exists.

Can anyone help me on this.

Note : I use CubeMX to generate the project.

4 REPLIES 4

Not sure I'm aware of a reason why the hardware would fail, assume you're going to have to debug the software

You'll likely need to output diagnostics/telemetry to understand failure.

Do sanity checking on stack and heap, and alert when memory allocations fails.

Watch for resource leaks.

Perhaps have different tasks write words directly into the frame buffer so some pixels can be used as a heart-beat to prove the LTDC and LCD are actually alive and well.

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

Thank you for your input. Will try.

S_1
Associate III

Hi, I have debugged and figured the problem is with the multibuffering, When I disabled it, LCD is working fine. I tried with both 2 and 3 buffers but the problem exist. Don't know what to do?

Could anyone help me on this?

S_1
Associate III

The below code is my configuration,

#define XSIZE_PHYS   800

#define YSIZE_PHYS   480  

#define NUM_BUFFERS     3  /* Number of multiple buffers to be used */

#define NUM_VSCREENS    1 /* Number of virtual screens to be used */

#define COLOR_CONVERSION_0   GUICC_M565

#define DISPLAY_DRIVER_0    GUIDRV_LIN_16

#define LCD_LAYER0_FRAME_BUFFER    ((uint32_t)0xc0000000) /* LTDC Layer 0 frame buffer */

void GRAPHICS_HW_Init(void)

 MX_FMC_Init(); 

 MX_SDRAM_InitEx();

 MX_LCD_Init();   /* LTDC struc, layer struct */

 MX_DMA2D_Init();

 DMA2D_Init();

}

void GRAPHICS_Init(void)

{

 /* Initialize the GUI */

 GUI_Init();

  WM_MULTIBUF_Enable(1);

/* Enable the multi-buffering functionality */

 /* Activate the use of memory device feature */

   /* USER CODE BEGIN WM_SetCreateFlags */

//   WM_SetCreateFlags(WM_CF_MEMDEV);

 HAL_LTDC_ProgramLineEvent(&hltdc, 0);

  /* USER CODE END WM_SetCreateFlags */

}