Skip to main content
Shree
Associate III
August 3, 2020
Question

Flickering issue on STM32F769NI

  • August 3, 2020
  • 1 reply
  • 536 views

Hi ,

I am working with STM32F769NI based custom board with 7" display of 800 x 480 resolution. I am experiencing the flickering effect whenever I am trying to update the screen content with digital clock updated at every 1 sec.

Please find the below video link for your reference

https://youtu.be/Cj5yvzDTxf4 

Request you share your suggestions to rectify this issue.

Regards,

Shree

/**
 * @brief DMA2D Initialization Function
 * @param None
 * @retval None
 */
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_M2M;
 hdma2d.Init.ColorMode = DMA2D_OUTPUT_ARGB8888;
 hdma2d.Init.OutputOffset = 0;
 hdma2d.LayerCfg[1].InputOffset = 0;
 hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_ARGB8888;
 hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA;
 hdma2d.LayerCfg[1].InputAlpha = 0;
 hdma2d.LayerCfg[1].AlphaInverted = DMA2D_REGULAR_ALPHA;
 hdma2d.LayerCfg[1].RedBlueSwap = DMA2D_RB_REGULAR;
 if (HAL_DMA2D_Init(&hdma2d) != HAL_OK)
 {
 Error_Handler();
 }
 if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK)
 {
 Error_Handler();
 }
 /* USER CODE BEGIN DMA2D_Init 2 */
 
 
 /* USER CODE END DMA2D_Init 2 */
 
 
}
 
/**
 * @brief LTDC Initialization Function
 * @param None
 * @retval None
 */
static void MX_LTDC_Init(void)
{
 
 
 /* USER CODE BEGIN LTDC_Init 0 */
 
 
 /* USER CODE END LTDC_Init 0 */
 
 
 LTDC_LayerCfgTypeDef pLayerCfg = {0};
 
 
 /* USER CODE BEGIN LTDC_Init 1 */
 
 
 /* USER CODE END LTDC_Init 1 */
 hltdc.Instance = LTDC;
 hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;
 hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;
 hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;
 hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
 hltdc.Init.HorizontalSync = 127;
 hltdc.Init.VerticalSync = 1;
 hltdc.Init.AccumulatedHBP = 215;
 hltdc.Init.AccumulatedVBP = 24;
 hltdc.Init.AccumulatedActiveW = 1015;
 hltdc.Init.AccumulatedActiveH = 504;
 hltdc.Init.TotalWidth = 1055;
 hltdc.Init.TotalHeigh = 524;
 hltdc.Init.Backcolor.Blue = 0;
 hltdc.Init.Backcolor.Green = 0;
 hltdc.Init.Backcolor.Red = 0;
 if (HAL_LTDC_Init(&hltdc) != HAL_OK)
 {
 Error_Handler();
 }
 pLayerCfg.WindowX0 = 0;
 pLayerCfg.WindowX1 = 800;
 pLayerCfg.WindowY0 = 0;
 pLayerCfg.WindowY1 = 480;
 pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB888;
 pLayerCfg.Alpha = 255;
 pLayerCfg.Alpha0 = 0;
 pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
 pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
 pLayerCfg.FBStartAdress = 0xC0000000;
 pLayerCfg.ImageWidth = 800;
 pLayerCfg.ImageHeight = 480;
 pLayerCfg.Backcolor.Blue = 0;
 pLayerCfg.Backcolor.Green = 0;
 pLayerCfg.Backcolor.Red = 0;
 if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)
 {
 Error_Handler();
 }
 /* USER CODE BEGIN LTDC_Init 2 */
 
 
 /* USER CODE END LTDC_Init 2 */
 
 
}

This topic has been closed for replies.

1 reply

Alexandre RENOUX
Visitor II
August 4, 2020

Hello,

What are you updating on the screen every second ? It looks like you have two Texture mappers (but might be something else).

Please try modifying your GUI from simplest to more demanding to see if it appears all the time. You are using an F7 with a 800x480 display which is considered a big screen for the F7. So depending on how much you render each time this can put heavy load on the MCU.

/Alexandre