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,还仍需要做一些工作:
- 配置LTDC(GPIO与相关时序参数),以便与连接的显示屏规格相匹配
- 配置LTDC,以便与所需的TouchGFX应用程序需求相匹配。
TouchGFX Generator可从STM32CubeMX读取各种配置,并提供被称为依赖关系的警告、建议或错误的列表。 下图显示了最初在CubeMX中为任何MCU启用LTDC时存在的依赖关系列表(在本示例中,我们使用F429):
Note
依赖关系 | 说明 |
---|---|
层数 | 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
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帧缓存配置
生成的TouchGFX HAL将在运行时自动配置LTDC层色彩帧缓存起始地址,因此不应在LTDC配置中设置数值。
结论
通过使用TouchGFX Generator使能并行RGB (LTDC)显示接口,可生成全部所需的HAL代码。
- 根据STM32CubeMX LTDC配置,设置TouchGFX应用程序里图形的宽度、高度和像素格式。 LTDC层的宽度和高度会影响TouchGFX Designer中的画布大小,LTDC像素格式会影响所需的TouchGFX帧缓冲驱动以及所生成图形资源的格式。
- 基于所选择的LTDC滴答计时源,可生成用于驱动TouchGFX Engine主循环的处理程序。 通常,对于LTDC配置,开发人员将始终使用现有的滴答计时驱动程序。