[其他ST产品] 通过 GFXMMU 实现 TouchGFX 画面垂直镜像 LAT1540

[复制链接]
361|0
STM新闻官 发表于 2025-9-10 17:42 | 显示全部楼层 |阅读模式
1. 引言
某客户项目需要在正常显示的基础上,增加垂直方向镜像特性,目标 MCU 是STM32L4R9。客户希望能够从硬件层面实现这个特性,避免引入两套 UI 资源和代码增加资源占用。

2. 调研
STM32L4R9 的 GFXMMU 外设原本用于减少非矩形显示面板的帧缓存占用,大致思路是将帧缓存按照物理显示的形状映射到一个虚拟空间,形状通过 LUT 来描述。对该虚拟空间的访问,会通过 LUT 来判断是否会被映射到物理内存,以及具体位置。如果把 Chrom-GRC 中的第一段映射到 Frame Buffer 中的倒数第一行,第二段映射到倒数第二行,以此类推,Frame Buffer 中的图像,在 CFXMMU 的虚拟空间中就是按照垂直镜像的方式存在的。我们可以通过反序加载 GFXMMU 的 LUT 来实现这个功能。
5157468c1478e28255.png
3. 实现
STM32L4R9-Discovery 板自带一块 390x390 分辨率的 LCD。我们首先在 GFXMMU 中开辟一块空间(0-389 行)按正序加载 LUT;再开辟第二块空间(390-779)按反序加载 LUT。然后将 LTDC Frame Buffer 地址向后偏移 390 行指向第二块空间。这样当 LTDC 取 Frame Buffer 第一行数据时,会被映射到物理内存的倒数第一行;取 Frame Buffer 第二行数据时,会被映射到物理内存的倒数第二行;以此类推,最终在屏幕上呈现出垂直镜像的效果。关键代码见图 2,详细代码请参考演示工程。运行结果见图 3
8399868c147d7c2fbd.png
图2. 反序加载 LUT,调整 LTDC Frame Buffer 地址

8367168c147e76568f.png

图3. 运行结果(左:正常显示,右:垂直镜像)

4. 小结

通过 GFXMMU 外设,可以实现显示垂直镜像而无需要引入额外工作量。

9974868c147fe7ab35.png


您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:您的嵌入式应用将得益于意法半导体领先的产品架构、技术、多源产地和全方位支持。意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。

1385

主题

1669

帖子

24

粉丝
快速回复 在线客服 返回列表 返回顶部