里飞网

标题: LTDC—驱动RGB TFT屏显示 [打印本页]

作者: 阿里兄    时间: 2019-12-20 15:07
标题: LTDC—驱动RGB TFT屏显示
LTDC—驱动RGB TFT屏显示一些注意事项,后面直接看代码
1、STM32F750Z8在使用了SDRAM后,最多只能驱动RGB666。
2、LCD有闪烁,可适当提高LTDC时钟频率,如果LTDC时钟过高,则LCD可能花屏。
3、LTDC比较好配置,直接从手删除拿来参数填上即可。
4、LTDC显示需要用到SDRAM,SDRAM需在LTDC前初始化好。


LTDC初始化
  1. void MX_LTDC_Init(void)
  2. {
  3.   LTDC_LayerCfgTypeDef pLayerCfg = {0};

  4.   hltdc.Instance = LTDC;
  5.   hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;
  6.   hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;
  7.   hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;
  8.   hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
  9.   hltdc.Init.HorizontalSync = 19;
  10.   hltdc.Init.VerticalSync = 9;
  11.   hltdc.Init.AccumulatedHBP = 65;
  12.   hltdc.Init.AccumulatedVBP = 32;
  13.   hltdc.Init.AccumulatedActiveW = 865;
  14.   hltdc.Init.AccumulatedActiveH = 512;
  15.   hltdc.Init.TotalWidth = 881;
  16.   hltdc.Init.TotalHeigh = 519;
  17.   hltdc.Init.Backcolor.Blue = 0;
  18.   hltdc.Init.Backcolor.Green = 0;
  19.   hltdc.Init.Backcolor.Red = 0;
  20.   if (HAL_LTDC_Init(&hltdc) != HAL_OK)
  21.   {
  22.     Error_Handler();
  23.   }
  24.   pLayerCfg.WindowX0 = 0;
  25.   pLayerCfg.WindowX1 = 800;
  26.   pLayerCfg.WindowY0 = 0;
  27.   pLayerCfg.WindowY1 = 480;
  28.   pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_ARGB8888;
  29.   pLayerCfg.Alpha = 255;
  30.   pLayerCfg.Alpha0 = 0;
  31.   pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
  32.   pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
  33.   pLayerCfg.FBStartAdress = 0xC0000000;
  34.   pLayerCfg.ImageWidth = 800;
  35.   pLayerCfg.ImageHeight = 480;
  36.   pLayerCfg.Backcolor.Blue = 0;
  37.   pLayerCfg.Backcolor.Green = 0;
  38.   pLayerCfg.Backcolor.Red = 0;
  39.   if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)
  40.   {
  41.     Error_Handler();
  42.   }

  43. }
复制代码


LTDC刷屏测试
  1. uint32_t tft_vram[480][800] __attribute__((at(0xC0000000)));

  2. void LTDC_Clear(uint32_t color)
  3. {
  4.     for ( int y = 0 ; y < 480 ; y++ )
  5.     {
  6.         for ( int x = 0 ; x < 800 ; x++ )
  7.         {
  8.             tft_vram[y][x] = color;
  9.         }
  10.     }
  11. }
  12. void LTDC_Test(void)
  13. {
  14.         uint32_t color;
  15.     while ( 1 )
  16.     {
  17.         HAL_Delay(2000);
  18.                 color = rand();
  19.                 //printf("color:%x\r\n",color);
  20.                 LTDC_Clear(color);
  21.     }
  22. }
复制代码


CUBEMX配置
(, 下载次数: 1196)
(, 下载次数: 1212)

工程代码: (, 下载次数: 1607)





欢迎光临 里飞网 (http://dz.lfly.xyz/) Powered by Discuz! X3.3