2024-01-12 05:37 AM - last edited on 2024-01-12 06:06 AM by SofLit
Hello,
I'm currently developing a GUI using TouchGFX version 4.23.0 and have encountered an issue with ghosting images on the display after programming my target device.
Here's a brief overview of my process:
I created a simple GUI project with TouchGFX Designer and generated the code.
I imported the generated code into STM32CubeIDE version 1.14.0 without any issues.
After compiling the code successfully, I downloaded it into my STM32 microcontroller.
When I run the program, the GUI appears on the display, but there is noticeable ghosting of the images. This ghosting effect persists and is quite apparent.
Do you have suggestions on what could be causing this ghosting effect or how to resolve it? Could this be related to the frame buffer, the DMA2D configuration, or perhaps some other timing issue?
Any advice or guidance would be greatly appreciated. Thank you in advance for your help!
Attached with the target GUI and GUI with problem photo.
Paul
2024-01-12 06:01 AM
Verify the DMA2D configuration settings, especially the transfer mode, pixel format, and destination address.
2024-01-12 06:16 AM
Hi liaifat85,
Thanks for your reply and i am sorry that i am new to the module. Below is the parameter setting of the DMA2D, actually, which one we need to use ? and the destination address mean the start address (it is 0xD00000000).
Thanks
Paul
2024-01-15 12:55 AM
Hi liaifat85,
I confirmed the MX_DMA2D_Init(void) function from the generated code from TouchGFX, the setting can match on the file .ioc and do you have any idea that i need to check.
Thank you very much.
Transfer Mode : Register to Memory
Color Mode : RGB888
Ouput Offset : 0
static void MX_DMA2D_Init(void)
{
/* USER CODE BEGIN DMA2D_Init 0 */
/* USER CODE END DMA2D_Init 0 */
/* USER CODE BEGIN DMA2D_Init 1 */
/* USER CODE END DMA2D_Init 1 */
hdma2d.Instance = DMA2D;
hdma2d.Init.Mode = DMA2D_R2M;
hdma2d.Init.ColorMode = DMA2D_OUTPUT_RGB888;
hdma2d.Init.OutputOffset = 0;
if (HAL_DMA2D_Init(&hdma2d) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN DMA2D_Init 2 */
/* USER CODE END DMA2D_Init 2 */
}