你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32H745I-DISCO GuiDemo 】GuiDemo 适配LTDC驱动

[复制链接]
andey 发布时间:2025-2-24 19:36

简介

我们在之前适配FreeRTOS工程的基础上继续更新,添加LCD模块的显示功能验证。STM32H745I-DISCO 开发板上集成了4.3寸的TFT 480*272 的RGB显示屏幕(RK043FN88H-CT661C)。LCD屏幕连接到了了MCU 的LTDC IP,通过LTDC 模块来驱动LCD显示屏,对应原理图如下。

lcd_sch.png

lcd1.png

LCD 参数配置

lcd_para.png

格局上述参数配置LCD 工作频率为8~12M,按照典型值9M来配置

lcd_clock.png

根据上述timing 的参数表配置LCD 的垂直方向的同步参数配置,我们都按照推荐的典型值来配置。

layer1_config.png

配置LCD 工作模式控制GPIO,屏幕点亮需要拉高对应GPIO.

LCD_DSI.png

上述配置好时钟,gpio,及LCD参数信息,会生成如下的LCD配置函数,我们将frame_buff指向特定rgb数据即可完成LTDC的显示。



/**
  * @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 = 3;
  hltdc.Init.VerticalSync = 3;
  hltdc.Init.AccumulatedHBP = 46;
  hltdc.Init.AccumulatedVBP = 15;
  hltdc.Init.AccumulatedActiveW = 526;
  hltdc.Init.AccumulatedActiveH = 287;
  hltdc.Init.TotalWidth = 534;
  hltdc.Init.TotalHeigh = 295;
  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 = 479;
  pLayerCfg.WindowY0 = 0;
  pLayerCfg.WindowY1 = 271;
  pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565;
  pLayerCfg.Alpha = 255;
  pLayerCfg.Alpha0 = 100;
  pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
  pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
  pLayerCfg.FBStartAdress = (uint32_t)&RGB565_480x272;;
  pLayerCfg.ImageWidth = 480;
  pLayerCfg.ImageHeight = 272;
  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 */

}

板子验证

在默认task 内添加如下测试代码以1S的周期,刷新显示FrameBuffer

/**
  * @brief  Function implementing the defaultTask thread.
  * @param  argument: Not used
  * @retval None
  */
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument)
{
  /* USER CODE BEGIN 5 */
  /* Infinite loop */
  for(;;)
  { 
     HAL_LTDC_SetAddress(&hltdc, (uint32_t)&RGB565_480x272, 0);  
     HAL_LTDC_Reload( &hltdc,LTDC_RELOAD_IMMEDIATE);  
     vTaskDelay(1000);  
     HAL_LTDC_SetAddress(&hltdc, (uint32_t)&_acrgb565data, 0);  
     HAL_LTDC_Reload( &hltdc,LTDC_RELOAD_IMMEDIATE);  
     vTaskDelay(1000);  
  }
  /* USER CODE END 5 */
}

运行结果如下,从效果看刷新全屏显示还是很丝滑的,性能感人。20250224-201337.gif

至此已经完成了基础工程(uart 日志打印+ freertos)和底层LTDC的适配,下一步继续GUI DEMO试验适配LVGL.

收藏 评论0 发布时间:2025-2-24 19:36

举报

0个回答

所属标签

ST中文论坛活动

即日起开启活动话题入口,之后的活动统一都放在此处,欢迎大家的加入!


最新内容

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版