跳转到主要内容

显示

显示组包含与显示屏有关的配置,如接口、尺寸和缓冲策略。

TouchGFX Generator显示设置

接口与尺寸

如今,STM32微控制器可使用多种显示接口,如:

  • 并行RGB(LTDC)
  • MIPI DSI
  • FMC
  • SPI

如果MCU带有连接到LTDC或FMC的显示屏,TouchGFX Generator可生成代码,以将帧缓冲器传输到连接的显示屏。 对于DSI和SPI接口,驱动程序必须由开发人员自己实现。

Further reading
有关不同显示接口的代码具体例程,请参见场景章节。

帧缓冲像素格式

TouchGFX Generator目前支持以下帧缓冲像素格式。 当使用“Custom”显示接口时,所有选项均可用,否则选项被限制为显示屏控制器设置(例如,配置LTDC Framebuffer格式为“RGB565”时,会将TouchGFX Generator中的配置选项限制为“RGB565”)。

  1. BW (1bpp)
  2. Grey2 (2bpp)
  3. Grey4 (4bpp)
  4. ABRG2222 (8bpp)
  5. ARGB2222 (8bpp)
  6. BGRA2222 (8bpp)
  7. RGBA2222 (8bpp)
  8. RGB565 (16bpp)
  9. RGB888 (24bpp)
  10. ARGB8888 (32bpp)
  11. XRGB8888 (32bpp)
Note
一些像素格式没有或仅有部分ChromART(DMA2D)支持。

缓冲策略&位置

可通过TouchGFX Generator配置以下帧缓冲策略:

  • 单帧缓冲 - 仅使用一个应用帧缓冲区。 可能会使性能受限,但占用内存更少。 可与“缓冲位置”配置一起使用,将其放置在内部RAM中。 为进一步优化,用户可以定义一个函数,该函数返回显示屏控制器正在处理的当前行。 该方法用于框架,以允许更新该帧期间已传输到显示屏的内存。
  • 双缓冲 - 使用两个帧缓冲区。 通常以牺牲内存为代价来获得更好的性能。
  • 部分缓冲- 将一个或多个用户定义的内存块作为帧缓冲区。 该策略适用于低成本解决方案,不依赖外部RAM,且显示屏的全帧缓冲可能超出可用内存。

对于单缓冲区和双缓冲区,用户可通过“缓冲器位置”来配置其位置,该配置提供以下选项:

  • 按分配- 允许链接器根据链接器脚本来放置帧缓冲存储器。 默认位于内部RAM中。
  • 按地址- 允许用户定义一个(单) 或两个(双) 帧缓冲地址。

部分帧缓冲策略允许用户定义以下参数:

  • 块数(始终放置在内部RAM中)
  • 块大小(字节)

要了解有关部分缓冲战略的一些核心概念,请阅读使用部分帧缓冲区降低内存要求的专用文章。 本文从概念上说明了如何实现部分帧缓冲,并且本文中显示的代码与TouchGFX Generator生成的代码略有不同。 有关为这些策略生成的具体示例代码,请参见帧缓冲策略

Caution
对于STM32F7/H7:如果帧缓冲区放置在Write Through缓存存储器(例如SRAM)中,那么在DMA2D(如果已在Generator中进行配置)访问它之前,DCache会被生成的代码先清空。 记住要在STM32CubeMX中的Cortex M7System Core设置中启用CPU Cache,这样缓存机制才能正常工作。
Further reading
如需更多关于CPU缓存的详细信息,请参阅F7和H7中的“Cache(缓存)”章节。