TouchGFX 4.19现在可供下载。新版本包括静态图形功能和 TouchGFX Designer 中改进的文本管理系统,具有分组功能和处理排版设置的新方法。推动这个新版本的主旨是工作流程优化。多亏了这些新功能,创建静态图形只需单击几下,而不是一行一行的自定义代码。同样,新的文本管理界面将使类似资源的搜索和分组变得更加简单。无论是加快翻译操作还是协助为 UI 做出贡献的作者,新功能都应该有助于节省时间并使用户体验更有意义。
什么是 TouchGFX?
框架
TouchGFX 是 ST 的免费使用框架,有助于在 STM32 微控制器上创建图形用户界面。该引擎用 C++ 编写,利用了 ST 设备上的优化。TouchGFX 的工作假设是用户界面由用户导航的屏幕组成。因此,该框架是直观的并反映了用户体验。它也很广泛,因为它可以处理 2D 和 3D 对象、视频、动画、过渡等。此外,访问生成的代码的能力允许专家工程师优化他们的代码。TouchGFX文档通常是开发人员找到有关框架的 API 或可用开发工具之一的信息的第一个地方。
TouchGFX 设计师
TouchGFX Designer 通常是开发人员在启动他们的 UI 时使用的第一个工具。它是一种采用所见即所得方法的设计实用程序,设计师可以在其中创建用户将看到并与之交互的内容。开发人员可以从示例项目开始,例如时钟、仪表或动画图像。还有更多成熟的演示,如骰子动画、场景转换或游泳池监控系统。启动屏幕帮助选择演示应用程序、ST 开发板,然后配置所有内容。因此,运行示例代码和演示需要几分钟,这意味着更快地创建概念验证。TouchGFX Designer 中的 UI 元素通常采用通过实用程序界面添加和配置的小部件的形式。
TouchGFX Designer 是 TouchGFX 生态系统的一个组成部分。例如,只要用户选择3.0模板,就可以在Designer中启动项目,然后将其带到STM32CubeMX,设置Discovery板或MCU,让TouchGFX Generator(见下文)更新.IOC文件为立即应用新设置。同样,开发人员可以从 TouchGFX Generator 开始,移至 TouchGFX Designer,然后返回 STM32CubeMX 以更改显示分辨率。系统会自动更新 TouchGFX Designer,无需关闭应用程序。
TouchGFX 模拟器
TouchGFX Simulator 可帮助开发人员在将图形用户界面运行到他们的 MCU 之前对其进行模拟。它的部分吸引力在于它提供了键盘快捷键来简化工作流程。例如,更容易拍摄各种屏幕截图并逐帧研究动画。同样,按 F2 会突出显示无效区域,即系统必须更新的帧部分。因此,开发人员可以检查他们的动画是否通过不必要地使资产无效来浪费 MCU 资源。
TouchGFX 发生器
能手表上协同工作
TouchGFX Generator 与STM32CubeMX一起生成 TouchGFX 抽象层 (AL) 的重要部分。我们支持几乎所有带显示屏的 STM32 探索套件,新插件适用于任何配备 Cortex-M0+、M4 或 M7 的 STM32 MCU。开发人员仍然需要用他们的用户代码来填补一些空白并进行优化,但是这个新插件让开始一个项目变得更加简单。实际上,Generator 创建了空函数来指导开发人员并促进威廉希尔官方网站 板初始化。ST 开发板也有现有的默认设置,以加速开发并用作示例。
TouchGFX 4.19 有什么新功能?
静态图
随着可穿戴设备跟踪环境或物理数据,用户希望看到进展。图表可以跟踪心率、温度、步行步数等。TouchGFX 开发人员首先要求提供动态图形,因为它们很难实现,而且该功能自 TouchGFX 4.15 起就可用。现在,我们的团队正在发布静态图表以适应新的应用程序。事实上,不需要不断演变或只知道随时间发生轻微变化的数据更适合静态表示。新图表的工作方式略有不同。由于时间间隔是恒定的,因此开发人员只需在动态数据点上发送一个数据点。但是,对于静态的,程序员必须输入 X 轴和 Y 轴的信息。
高级文本管理
文本是大多数图形用户界面的重要组成部分,这解释了为什么设计师在它上面工作如此之多。他们对其进行定制、翻译和塑造。在 TouchGFX Designers 上创建的一些应用程序可以有数千个文本资源,每个资源都被翻译成多种语言。问题是使用文本可能很麻烦。因此,为了减少摩擦,TouchGFX 现在提供了开发人员可以根据其应用程序的部分或功能定义的组。新功能使在 TouchGFX Designer 中并排显示翻译文本变得更加简单。它还有助于捆绑相关信息以检查一致性和准确性。最后,小组可以更快地搜索和查找特定资源。
TouchGFX Designer 还包括Typographies在组内设置默认参数的选项。该部分允许用户选择字体规范、备用字符、通配符、对齐方式等。以前,开发人员必须覆盖每个文本资源的参数,这可能是很多工作。多亏了组,可以同时为许多资源设置参数,从而极大地优化开发。具有自定义排版的现有项目将看到其设置移至新部分。新的文本界面还显示一次性文本,并在必要时将其提升为资源。
TouchGFX 中已有哪些功能?
支持 X-NUCLEO-GFX01M2 和 X-NUCLEO-GFX02Z1
当工程师决定使用图形用户界面时,显示器通常会成为其物料清单中最昂贵的组件。一个没有触摸层的简单 2 英寸显示屏将显着改善用户体验,但它仍然比其他任何东西都更昂贵。因此,当以 5 美元或更少的 BoM 为目标时,采购价格合理的显示器是有问题的。因此,ST 推出了显示扩展板以帮助工程师找到具有成本效益的部件,并且我们为 TouchGFX Designer 中的硬件提供支持。用户选择显示器的配置,并可以开始在与其规格相匹配的界面上工作。
工程师可以选择的第一个扩展板是X-NUCLEO-GFX01M2。它使用支持 SPI 闪存的 SPI 2.2 英寸 QVGA (320 x 240) 显示器,对于带有外部闪存和两层 PCB 的典型嵌入式系统来说,这将适合大约 5 美元的 BOM。X-NUCLEO-GFX01M2 与各种 64 针 NUCLEO 板兼容。例如,工程师可以在NUCLEO-WB55RG上使用它来帮助使蓝牙应用更易于访问。
同样,X-NUCLEO-GFX02Z1是我们第一款支持并行接口、QSPI 闪存和 144 针 Nucleo 板的显示扩展板。该平台以功率更大的微控制器为目标,这解释了与提供更高带宽的接口的兼容性。开发人员可以将 X-NUCLEO-GFX02Z1 与首批 STM32U5 推出的NUCLEO-U575ZI-Q一起使用。因此,它使工程师能够利用新 MCU 更好的每瓦性能比来创建前几代 STM32 无法实现的用户界面。
在 UI 中嵌入视频
将视频带入更多 UI 的愿望是嵌入式系统显示器日益普及的自然结果。不幸的是,在带有微控制器的嵌入式系统上显示视频具有挑战性。没有带有默认媒体播放器和编解码器的操作系统。同样,编写显示 YouTube 视频的网页也是不可能的。开发人员必须完成所有繁重的工作,例如实现视频缓冲区、确定哪种格式最适合他们的微控制器,以及确定如何利用硬件加速(如果可用)。TouchGFX Designer 提供了一个视频小部件来解决这一挑战。因此,现在添加视频只需要三个简单的步骤。
可缓存容器
顾名思义,CacheableContainers 使用位图缓存来加速图形性能并启用更高的帧速率以实现更平滑的过渡。下面的演示在STM32F429I 探索套件上运行。如果没有 CacheableContainers,简单的全屏 (240 × 320) 幻灯片动画将以每秒 9 帧的速度运行。借助 TouchGFX 技术,系统达到每秒 60 帧。一些智能手表目前使用此功能来确保无缝的用户体验,尽管其外形尺寸固有的重大硬件限制以及需要更长的电池寿命。除了动画之外,CacheableContainers 还可以优化复杂的小部件,例如纹理映射器或静态背景前显示的小型动态元素。
如果没有 CacheableContainers,动画必须重绘每一帧,这会导致计算量大。CacheableContainer 通过将第一帧和最后一帧以系统保存在 RAM 中的位图形式存储在单独的容器中来绕过这个问题。系统不是渲染动画,而是使用 DMA 从内存中检索两个图像,并通过一个简单的 DynamicBitmap 方法将它们显示在不同的位置。MCU 不再生成每一帧,从而显着优化性能。开发者只需在 TouchGFX Designer 中勾选 Cacheable 框,选择要缓存的容器在内存中的位置,需要时调用即可。使用这种技术,渲染时间从 100 ms 下降到 5 ms。
部分帧缓冲
帧缓冲区是一个连续的内存空间,用于存储将出现在显示器上的每个像素的表示。例如,用于智能手表显示屏的标准 24 位 390 x 390 图像需要 3,650,400 位或 456.3 KB 的帧缓冲区(
),这是STM32L4+ 上可用 SRAM 的 70% 以上,在智能手表和可穿戴设备上表现出色。如果应用程序需要多个帧缓冲区,这个数字可能会激增。超出容量限制,较大的帧缓冲区需要更长的时间来获取,因为更多的数据必须从内存传输到显示器,从而降低性能。
顾名思义,Partial Framebuffer 只存储了部分帧缓冲区,从而减少了 10 倍的内存占用。开发者可以根据屏幕的哪一部分来配置它的大小,然后再存储多个部分缓冲区。然后框架将选择合适的并将其发送到显示器。该技术最适用于短动画,例如时钟、加载条或随时间自行构建的图表。它还要求屏幕使用嵌入式控制器,因为它将直接从 MCU 的 RAM 接收部分帧缓冲区,从而绕过闪存以提高性能。该技术适用于并行/8080、DSI 和 SPI 显示器。
TouchGFX 还优化了部分帧缓冲区,为资源受限的微控制器带来 UI。传统上,最小的图形界面需要大约 200 KB 的帧缓冲区。然而,当像 STM32G071 这样的微控制器只有 36 KB 的 RAM 时,这可能是一个真正的问题。TouchGFX 通过将部分帧缓冲区优化为仅 6 KB 解决了这个问题。考虑到框架的应用程序数据,入门级 UI 只需要 16 KB 的 RAM 即可运行。TouchGFX 还使用智能部分屏幕更新。该功能补充了部分帧缓冲以优化屏幕上的更新顺序。该过程节省了资源,从而允许在同一时期进行更多更新。
L8 压缩格式
图形资产占用大量内存空间,降低其质量意味着降级用户界面。因此,L8 是一项基本功能,因为它可以将图像文件压缩高达 75% 而无需降级,这要归功于 STM32 微控制器中的 ChromART 加速器。只要资产使用最多 256 种颜色,这在配备 STM32 MCU 的小型嵌入式系统上很常见,开发人员只需在 TouchGFX Designer 中勾选一个框,就可以选择使用 L8 格式压缩资产。解压缩在计算上也很高效,因为它使用 ChromART 引擎在表格中查找颜色并在不损失质量的情况下渲染资产。
文本的 XML 文件
设计团队经常将文本存储在 Excel 文件中,以便与世界各地的各种翻译人员合作。然而,与使用 Git 等版本控制系统不同,编辑人员必须手动处理更改,并确保没有人无意中覆盖了其他人的工作,这可能很麻烦。为了解决这个问题,TouchGFX 将所有文本存储在一个 XML 文件中。该格式使合并操作和冲突解决变得更加简单。TouchGFX 还包括一个 XML 到 Excel 转换器,以适应现有的工作流程。开发人员可以导出到 Excel,然后将他们的 Excel 文件重新导入 TouchGFX 及其 XML 格式。
优化的项目文件
TouchGFX 还通过小型项目文件促进协作。它们的大小使它们更容易合并和共享。以前,项目文件以 JSON 格式存储所有参数。问题是这样的文件会变得非常大。因此,ST 决定仅通过存储自定义设置来优化项目文件。因此,文件中没有的任何内容都被视为使用默认值。因此,文件要小得多,从而使 Git 上的合并操作更加直接和快速。
一次性文本及其随机 ID
希望使用文本的开发人员必须在 TouchGFX Designer 的文本面板中创建资源,然后在 UI 中使用文本的 ID。但是,TouchGFX 也允许“一次性文本”,它不会作为典型的文本资源出现。开发人员在测试期间或文本不重要时使用它。它可以防止用不相关的文本填满数据库,并帮助更快地制作原型。实际上,与常规文本资源不同,一次性文本功能会自动生成 ID 并在从 UI 中删除资源时从数据库中删除。TouchGFX 还使用随机字符串生成器来创建 ID。因此,同一项目中的两个一次性文本 ID 几乎不可能相同。
动画和小部件
滑入过渡和动态图
开发人员面临的挑战是利用我们不断添加到 TouchGFX 的所有功能。因此,我们提供已使用上述功能的优化动画。例如,虽然传统的滑入式过渡需要整个屏幕刷新,但 TouchGFX 的擦除动画使用的资源要少得多。同样,动态图小部件可以更好地显示顺序数据,而对 RAM 和微控制器的影响较小。
时钟和纹理映射器
TouchGFX 还具有模仿应用程序的小部件,例如模拟和数字时钟。还有一个纹理映射器,这意味着开发人员可以通过简单的拖放来开始创建他们的映射程序。他们仍然需要输入他们的 C++ 代码,但这会使整个过程更加顺畅。Texture Mapper 也是在资源受限的 MCU 上进行 TouchGFX 优化的一个很好的例子。只要图形资产在 RAM 中而不是闪存中,它就可以帮助为对象设置动画,甚至可以在STM32G0上工作。
测量
仪表模板绘制针和弧以帮助用户监控值。开发人员还可以更改其背景、针的方向、值的范围等。下面的演示展示了程序员如何在他们的 IDE 和 TouchGFX Designer 之间切换以获得更流畅的工作流程。团队可以快速检查量表,即时调整它,并立即测试他们的代码。例如,视频展示了该handleTickEvent()功能如何控制仪表的行为。只需几行代码,开发人员就可以更改值的范围以及指标接收更新的频率等。这样的优化可以在不需要不断更新显示值的应用中节省大量资源。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !