跳转到主要内容

LTDC/并行RGB

对于带有TFT控制器的MCU(如STM32F429、STM32F746、STM32H7) ,TouchGFX Generator可生成用来配置LTDC,以及将像素从帧缓存传输到显示屏的HAL部分代码。 一旦LTDC触发VSYNC中断,生成的代码将启动正确的帧缓存传输,并通过调用OSWrappers::signalVSync()来解除TouchGFX Engine主循环阻塞。

显示接口

与开发人员必须手动实现整个驱动程序的“定制”显示接口相反,对于LTDC,TouchGFX Generator可生成支持LTDC配置所需的所有TouchGFX HAL代码。

若要通过TouchGFX Generator将“并行RGB (LTDC)”作为可选项,必须在STM32CubeMX类别列表中的Multimedia组使能LTDC

一旦使能LTDC,并行RGB (LTDC) 选项将在TouchGFX Generator的显示部分变得可用。

即使通过STM32CubeMX使能了LTDC,还仍需要做一些工作:

  1. 配置LTDC(GPIO与相关时序参数),以便与连接的显示屏规格相匹配
  2. 配置LTDC,以便与所需的TouchGFX应用程序需求相匹配。

TouchGFX Generator可从STM32CubeMX读取各种配置,并提供被称为依赖关系的警告、建议或错误的列表。 下图显示了最初在CubeMX中为任何MCU启用LTDC时存在的依赖关系列表(在本示例中,我们使用F429):

Note
通过STM32CubeMX使能LTDC后,TouchGFX Generator界面中将立即显示LTDC建议、警告和错误。
依赖关系说明
层数TouchGFX只能利用单层。 尽管TouchGFX应用程序可在使能两个层的情况下运行,但用户需要注意,这可能导致LTDC配置错误。 更改LTDC块中的层数。
窗口位置默认情况下,LTDC层的水平和垂直窗口位置为0。 窗口的水平和垂直停止位置必须设置为与显示屏尺寸相等。
Alpha常数为0默认情况下,LTDC层的alpha常数为0。 除非始终在应用程序中具有全局alpha,否则该常数应大于> 0,最好为255。

在多媒体部分使能LTDC外设后,记住切实选择并行RGB (LTDC) 显示接口。

下图显示了满足警告条件的LTDC配置,该配置会使依赖关系组从TouchGFX Generator界面中消失。

读取STM32CubeMX的设置

通过TouchGFX Generator将 并行RGB (LTDC)选作显示接口,将从LTDC配置的水平启动/停止垂直启动/停止继承帧缓冲的宽度高度

根据显示和应用程序尺寸定义第0层的尺寸后,依赖关系窗口中将显示一个新条目。

通常需要确保帧缓存图像宽度图像高度与窗口尺寸匹配,以满足警示要求。

Caution
如果使能LTDC配置,TouchGFX Generator将从LTDC配置继承宽度高度值。 当然,我们仍可以从TouchGFX Generator界面修改宽度高度。 如果未遵循LTDC窗口层配置,更改这些值可能导致配置不匹配。

TouchGFX驱动程序/VSYNC信号

一旦并行RGB (LTDC)被选作显示接口,开发人员就可以访问LTDC应用滴答计时驱动程序或TouchGFX驱动程序。

以下代码是根据LTDC配置而生成的LTDC中断处理程序(STM32F7)。 生成的处理程序将自动解除对TouchGFX Engine主循环的阻塞。

extern "C"
irq void LTDC_IRQHandler(void)
{
if (LTDC->ISR & 1)
{
LTDC->ICR = 1;
if (LTDC->LIPCR == (LTDC->AWCR & 0x7FF) - 1)
{
//entering active area
OSWrappers::signalVSync();
}
}
}
Note
为使LTDC驱动程序能够正常工作,用户必须通过LTDC NVIC或通过Global NVIC设置来使能LTDC全局中断,同时使能中断处理代码的生成。

LTDC帧缓存配置

生成的TouchGFX HAL将在运行时自动配置LTDC层色彩帧缓存起始地址,因此不应在LTDC配置中设置数值。

结论

通过使用TouchGFX Generator使能并行RGB (LTDC)显示接口,可生成全部所需的HAL代码。

  • 根据STM32CubeMX LTDC配置,设置TouchGFX应用程序里图形的宽度、高度和像素格式。 LTDC层的宽度高度会影响TouchGFX Designer中的画布大小,LTDC像素格式会影响所需的TouchGFX帧缓冲驱动以及所生成图形资源的格式。
  • 基于所选择的LTDC滴答计时源,可生成用于驱动TouchGFX Engine主循环的处理程序。 通常,对于LTDC配置,开发人员将始终使用现有的滴答计时驱动程序。