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

[复制链接]
606|10
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


xiaoqizi 发表于 2025-10-14 11:44 | 显示全部楼层
支持调色板索引模式到真彩色的实时映射
木木guainv 发表于 2025-10-14 16:14 | 显示全部楼层
GFXMMU 的Alpha混合实现半透明效果而无需软件逐像素计算
Jiangxiaopi 发表于 2025-10-14 20:34 | 显示全部楼层
TouchGFX 是一个轻量级嵌入式 GUI 框架
荣陶陶 发表于 2025-10-15 09:55 | 显示全部楼层
TouchGFX性能瓶颈通常在于 CPU 执行位图操作(如渐变、旋转),而 GFXMMU 正好能分担这部分工作
Zuocidian 发表于 2025-10-15 14:12 | 显示全部楼层
启用时钟树:在 STM32CubeMX 或手动修改 RCC 寄存器中开启 [size=0.875]DMA2D, [size=0.875]DSI, LTDC
Zhiniaocun 发表于 2025-10-15 18:31 | 显示全部楼层
原 TouchGFX 默认使用纯软件绘制函数,需将其替换为 GFXMMU 加速版本
Puchou 发表于 2025-10-15 22:31 | 显示全部楼层
确保源图像与显示设备的色深一致
Xiashiqi 发表于 2025-10-16 10:33 | 显示全部楼层
MMU 页表错误:使用调试工具观察 TLB Miss 率,必要时调整页面大小对齐方式
小海师 发表于 2025-10-16 14:45 | 显示全部楼层
监测 [size=0.875]HSYNC/VSYNC, [size=0.875]DE [size=0.875]PCLK 之间的相位关系
Haizangwang 发表于 2025-10-16 19:17 | 显示全部楼层
保持 TouchGFX 上层业务逻辑不变,仅修改底层驱动接口
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

1398

主题

1716

帖子

25

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