你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于低成本 STM32 的图形应用

[复制链接]
STMCU小助手 发布时间:2023-6-19 14:07
前言
8 S7 y( h3 b9 u& z  o) g+ g越来越多的智能设备会基于 STM32 实现图形界面,而 TouchGFX 是专门用于 STM32 的图形界面设计软件,使图形界面能达到类似智能手机的显示效果。通常,在支持 FMC、LTDC、MIPI-DSI 等 LCD 接口的 STM32,都有着比较丰富的内存资源,SRAM 存放帧缓冲也毫无压力。但在一些成本敏感的产品上,STM32 内存较小,不足以存放完整的帧缓冲,这类产品又如何使用 TouchGFX 来做图形界面应用呢?本文将介绍 TouchGFX 的部分帧缓冲特性,以及基于STM32G0 系列 的移植过程。& h( q4 X" S, s! [4 @' O9 i
部分帧缓冲
/ N6 O+ k6 R7 d8 [' D通常在做图形应用时,需要在 MCU 的 SRAM 里申请一块内存作为帧缓冲:framebuffer。比如使用一个分辨率为240x320,16 位色深的 LCD,需要申请的内存大小为:240x320x2 = 153600 Bytes。而很多低成本的 MCU 内存较小,根本无法满足图形应用对内存的需求。不过,TouchGFX 现在支持部分帧缓冲,仅使用较小的内存作为帧缓冲即可支持图形应用。% f+ P6 E1 ^' U$ G. P
' h& j0 }! S% x; a( T+ d
Partial Framebuffer,部分帧缓冲
$ P: [" G, O& I对内置了 GRAM 的 LCD 来说,图形显示的过程可以概括如下图:
9 W6 R! t) H' c7 Z! l! r2 e% |4 a# S6 i! J4 t, h

4 T( V* w9 v; m$ c V7O8[W}A{S)]Z)6@RGOWN@O.png
9 ]- {' }. b# v9 m3 y
3 g3 e, S5 B( {/ _2 z' x
1, MCU 将图形界面画到内部 Framebuffer9 s+ S! q3 o0 r
2, 画图过程结束后,将 Framebuffer 内容传输到 LCD GRAM
+ E2 g/ h% C8 K- e4 R/ {8 s# X3, 由 LCD controller 将 GRAM 内容显示到屏幕+ T  E9 P5 i. a! J1 V6 N7 C- {

% B- A- T+ d3 g, u3 [: @; E1 z! W
如果使用完整的 framebuffer,在上面第 2 步进行传输时,每次传输的都是一整屏的数据。而在很多场景中,LCD 屏幕上变化的区域并不大。比如一个控制界面,可能只有一个小图标会有变化,其它区域都保持不变。我们可以只更新屏幕变化的区域。
* P( g5 v- N& m- e- s9 F0 k& b2 g/ q部分帧缓冲与此类似,framebuffer 可以被分成许多个小的缓存块去更新和传输,而这些小块的缓存可以被重用,这样可以极大的减小图形应用对内存的需求。而使用 partial framebuffer 的方式,仅有稍许限制:
  C7 G- f3 Y' X& D1, LCD 模块必需要内置 GRAM
, N: G) l. d. L, ~1 v$ M2, 在复杂界面时可能会有撕裂效果5 x6 e' F2 z3 @

% J" C* x; [! Q部分帧缓冲在 STM32G071 上的应用 * b3 N  N1 K) _
目标板上的 STM32G071 内置 128K flash,36K SRAM,外接 SPI 接口的 LCD,分辨率 240x320 像素,16 位色。按此 LCD 的分辨率,要支持 TouchGFX 图形应用,必须使用部分帧缓冲特性。
4 ~/ }9 ~9 p3 R+ g2 v* ?% e+ Z
$ F$ \: H7 S2 @3 a# f
配置过程
. G$ r; o  K+ \* p整个配置过程主要包括以下四个方面:' N9 Z% q5 B) r+ f6 }/ I( s! V! O
一、在 CubeMX 中,配置 TouchGFX generator 的 display 属性如下图:: ^$ q; d( \8 L! M! A3 |
9U48ZJRGV[})~8Q`{OQ`]T6.png 3 S! _! O# \( ]
8 K$ q! Q6 ^7 I+ h! g
缓冲块个数和缓冲块大小都可以根据需要调整
. a) y9 ~! o" U9 Q
+ \' E  U1 [3 Q9 b* _

" T/ L& |9 d, Q. B7 X NL]D)L~F}{20Q92U94Z6N75.png 3 J2 D; L, r  P: g+ F- i5 s. o

- p/ _& V, I6 ]0 J
二、配置完成后,先由 CubeMX 生成代码。可以看到,会生成 TouchGFX 目录,以及该目录下的配置文件与部分源码文件。
( ?- t; R- ?2 R( v% N, ?: b" G3 F) q7 N5 b7 g2 F9 O' w3 l) i" h
%BMHLSDS5WF{)UK~8HRI2HG.png ( z9 b/ I. g- u
三、打开 ApplicationTemplate.touchgfx.part 文件,即可打开 TouchGFX Designer 工具,如下图。比如,可以添加box 控件作为背景,textArea 控件来显示文本。% A1 O. U9 R3 h1 L4 ~! K9 p

$ t1 I4 u4 x1 Z, N6 s7 Q; Y. L }U]B28(CY}(B5X4RSSR(P93.png 5 G" v+ s2 [6 L9 X8 A. `+ q/ Z% l
然后通过 Generate Code 生成 UI 相关的代码,主要包含 generated 和 gui 两个目录。generated 目录包含生成的资源文件,如字体信息、文本信息、图片资源等,还包括各个 screen 的基类代码。而 gui 目录则包含 screen 的派生类代码。用户可基于 gui 目录进行 UI 后续的开发。
, W  x' M' S2 a3 X# ~% b9 V3 l# S+ T" T) v* n

) z# I; b) T; b2 X" c/ X( ~- ~ @J}]NR~L`KZ)`VIZ584VG(7.png 1 u, ?/ }" d/ a, R
; I  E3 N  @# T8 j
完整版请查看:附件 基于低成本STM32的图形应用v1.pdf (540.18 KB, 下载次数: 6)
赞 收藏 评论0 发布时间:2023-6-19 14:07

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版