×

stm32-------- RGB屏幕驱动_LTDC 配置

zxjy辉 zxjy辉 发表于2025-09-04 10:33:01 浏览218 评论0

抢沙发发表评论


摄影自然风景素材-摄影自然风景模板-摄影自然风景图片免费下载-设图网

使用的是stm32f429ZGT6 ,如何根据数据手册配置LTDC


  1. 资源 

    1.  RGB屏幕购买链接

    2. RGB屏幕产品官网  相关的参考手册和内容

  2. 配置

    1. 屏幕参数,这个屏幕的显示屏驱动芯片采用的是ST7265

      image.png
      image.png

      image.png

    2. void MX_LTDC_Init(void)
      {
        LTDC_LayerCfgTypeDef pLayerCfg = {0};
      
        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 = 4;
        hltdc.Init.VerticalSync = 4;
        hltdc.Init.AccumulatedHBP = 8;
        hltdc.Init.AccumulatedVBP = 16;
        hltdc.Init.AccumulatedActiveW = 808;
        hltdc.Init.AccumulatedActiveH = 496;
        hltdc.Init.TotalWidth = 816;
        hltdc.Init.TotalHeigh = 512;
        hltdc.Init.Backcolor.Blue = 0;
        hltdc.Init.Backcolor.Green = 0;
        hltdc.Init.Backcolor.Red = 0;
        /* 下面这个配置是按照野火的配置的 实际跑起来没差 */
      //  hltdc.Init.HorizontalSync = 3;
      //  hltdc.Init.VerticalSync = 3;
      //  hltdc.Init.AccumulatedHBP = 11;
      //  hltdc.Init.AccumulatedVBP = 19;
      //  hltdc.Init.AccumulatedActiveW = 811;
      //  hltdc.Init.AccumulatedActiveH = 499;
      //  hltdc.Init.TotalWidth = 819;
      //  hltdc.Init.TotalHeigh = 515;
      //  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_RGB565;
        pLayerCfg.Alpha = 255;
        pLayerCfg.Alpha0 = 0;
        pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
        pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
        pLayerCfg.FBStartAdress = (uint32_t)FRAME_BUFFER;
        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();
        }
      //		HAL_LTDC_ProgramLineEvent(&hltdc, 0); // 参数是行号,0表示在垂直消隐开始产生中断
      //	__HAL_LTDC_ENABLE_IT(&hltdc, LTDC_IT_LI); // 使能行中断
      //	// 启动LTDC
      //		__HAL_LTDC_ENABLE(&hltdc);
      }
    3. 如何配置

      1. // 按照野火的LTDC配置  https://doc.embedfire.com/mcu/stm32/f767tiaozhanzhe/hal/zh/latest/doc/chapter26/chapter26.html
        /**   * @brief  LTDC Init structure definition  
         */typedef struct{
           uint32_t HSPolarity;             /*配置行同步信号HSYNC的极性 */
           uint32_t VSPolarity;             /*配置垂直同步信号VSYNC的极性 */
           uint32_t DEPolarity;             /*配置数据使能信号DE的极性*/
           uint32_t PCPolarity;             /*配置像素时钟信号CLK的极性 */
           uint32_t HorizontalSync;             /*配置行同步信号HSYNC的宽度(HSW-1) */
           uint32_t VerticalSync;              /*配置垂直同步信号VSYNC的宽度(VSW-1) */
           uint32_t AccumulatedHBP;             /*配置(HSW+HBP-1)的值*/
           uint32_t AccumulatedVBP;             /*配置(VSW+VBP-1)的值*/
           uint32_t AccumulatedActiveW;             /*配置(HSW+HBP+有效宽度-1)的值*/
           uint32_t AccumulatedActiveH;             /*配置(VSW+VBP+有效高度-1)的值*/
           uint32_t TotalWidth;             /*配置(HSW+HBP+有效宽度+HFP-1)的值*/
           uint32_t TotalHeigh;             /*配置(VSW+VBP+有效高度+VFP-1)的值*/
           uint32_t Backcolor;              /*配置背景颜色值*/
        } LTDC_InitTypeDef;
        // 那么根据数据手册的数据可得
        HSW = 4 VSW = 4
        HBP = 8 VBP = 16
        HFP = 8 VFP = 16
        //  hltdc.Init.HorizontalSync = 3;
        //  hltdc.Init.VerticalSync = 3;
        //  hltdc.Init.AccumulatedHBP = 11;
        //  hltdc.Init.AccumulatedVBP = 19;
        //  hltdc.Init.AccumulatedActiveW = 811;
        //  hltdc.Init.AccumulatedActiveH = 499;
        //  hltdc.Init.TotalWidth = 819;
        //  hltdc.Init.TotalHeigh = 515;
        //  hltdc.Init.Backcolor.Blue = 0;
        //  hltdc.Init.Backcolor.Green = 0;
        //  hltdc.Init.Backcolor.Red = 0;
      2. 如果直接将数据手册的直接抄过来
        
          hltdc.Init.HorizontalSync = 4;
          hltdc.Init.VerticalSync = 4;
          hltdc.Init.AccumulatedHBP = 8;
          hltdc.Init.AccumulatedVBP = 16;
          hltdc.Init.AccumulatedActiveW = 808;
          hltdc.Init.AccumulatedActiveH = 496;
          hltdc.Init.TotalWidth = 816;
          hltdc.Init.TotalHeigh = 512;
          hltdc.Init.Backcolor.Blue = 0;
          hltdc.Init.Backcolor.Green = 0;
          hltdc.Init.Backcolor.Red = 0;
          对比发现,这个值和数据手册给定的值,都能对得上,说明可以直接抄过来,也是没问题的


    4. 实际测试

      这两者配置,在运行的时候,没有什么大的不同


  3. 参考链接

    1. 野火LTDC配置




#好好学习!

群贤毕至

访客