[其他ST产品] TouchGFX FPS 的计算方法 LAT1478

[复制链接]
346|0
STM新闻官 发表于 2025-9-12 09:10 | 显示全部楼层 |阅读模式
1. FPS
帧率(Frames Per Second,简称 FPS)是指视频或动画中每秒钟显示的帧数,是画面显示流畅性的关键指标。TouchGFX Desinger 中提供了 FPS 计算公式,在 Demos 类别下,几个显示界面带有 FPS 的 Demo 其代码中都带有 FPS 计算公式。 大致是在每个界面的handleTickEvent 函数中通过如下公式来计算 FPS 值的。
8883568c14d0ac1203.png
6469468c14d138431e.png
图1. TouchGFX Designer 中的 FPS 计算公式(帧补偿打开)



2. FPS 计算公式的局限性

如果使用上述公式来计算 FPS,其实是需要满足一定前提条件的。一个是图像的刷新率是60Hz,另一个是是否开启帧补偿。


2.1. 刷新率是不是 60Hz

上述公式是在刷新率是 60Hz 的情况下计算的,如果 TouchGFX 界面的刷新率不是60Hz,那么上述公式计算出来的结果就不准确。

因为 FPS 是指在 1 秒钟时间里传输的图像的帧数量,那么每个 Tick 的周期要保证是16.667ms,这样才能使用 if (frames + frameSkippedCounter >= 60)的判断条件。TouchGFX 提供的 LTDC 接口的 TBS(TouchGFX Board Setup)每个 Tick 是 16.667ms,所以都使用这个公式,如果是自己重新创建的工程,那么就需要注意这点。如果一个 Tick周期是 33.3ms,1s 是 30 个 tick 周期,那么就需要修改判断条件为 if (frames + frameSkippedCounter >= 30)。

2.2. 帧补偿关闭的情况
其次,上述公式只有在 TouchGFX 丢帧补偿使能的情况下才有效。如果 TouchGFX 丢帧补偿处于关闭状态,那么可以用以下公式来计算 FPS。
118168c14d54b2cb9.png

3026268c14d5b05750.png
图2. TouchGFX Designer 中的 FPS 计算公式(帧补偿关闭)



3. 推荐的 FPS 计算公式

考虑到有时无法准确获得刷新率,以及不知道帧补偿是开启还是关闭,那么推荐的方式是通过逻辑分析仪来测量 1s 之内的渲染次数。例如测量 1s 内的 RENDER_TIME_GPIO 翻转的次数,这样是最准确的。

通过在 STM32CubeMX 中定义一个 RENDER_TIME_GPIO,然后 TouchGFX 引擎会自动调用 TouchGFXGPIO.cpp 中的以下代码来进行翻转。

5704868c14d8327a8a.png

7724568c14d8c179a3.png

图3. TouchGFXGPIO.cpp 中 GPIO 翻转相关代码

4. 小结

本文档介绍了不同情况下如何准确测量 TouchGFX 应用的帧率 FPS 的方法,供参考使用。

328868c14da4d41c6.png




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

本版积分规则

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

1385

主题

1669

帖子

24

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