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

基于低成本 STM32 的图形应用

[复制链接]
STMCU小助手 发布时间:2023-6-19 14:07
前言
, T. Z; H6 j2 T/ B  M越来越多的智能设备会基于 STM32 实现图形界面,而 TouchGFX 是专门用于 STM32 的图形界面设计软件,使图形界面能达到类似智能手机的显示效果。通常,在支持 FMC、LTDC、MIPI-DSI 等 LCD 接口的 STM32,都有着比较丰富的内存资源,SRAM 存放帧缓冲也毫无压力。但在一些成本敏感的产品上,STM32 内存较小,不足以存放完整的帧缓冲,这类产品又如何使用 TouchGFX 来做图形界面应用呢?本文将介绍 TouchGFX 的部分帧缓冲特性,以及基于STM32G0 系列 的移植过程。
& H" G; @9 g8 q- K3 p! I
部分帧缓冲 ; a2 v( G! |  r% i4 a/ X6 ^
通常在做图形应用时,需要在 MCU 的 SRAM 里申请一块内存作为帧缓冲:framebuffer。比如使用一个分辨率为240x320,16 位色深的 LCD,需要申请的内存大小为:240x320x2 = 153600 Bytes。而很多低成本的 MCU 内存较小,根本无法满足图形应用对内存的需求。不过,TouchGFX 现在支持部分帧缓冲,仅使用较小的内存作为帧缓冲即可支持图形应用。; O: V- f- e) Y  c8 J. g( D$ l

# q+ F/ V8 P- j, x* p! K1 q
Partial Framebuffer,部分帧缓冲
6 m# i( s2 X/ ^; W对内置了 GRAM 的 LCD 来说,图形显示的过程可以概括如下图:' ~  S+ ~( ?& e+ N- b; c, b- J0 V

* q% x5 a( A  Y" r7 [3 V4 e3 X2 }% A
+ Q$ A4 Q, R6 z/ n
V7O8[W}A{S)]Z)6@RGOWN@O.png
% M3 \1 i7 W0 P7 W- `& I% z9 M
& D" `4 b/ Z9 b7 h
1, MCU 将图形界面画到内部 Framebuffer1 m$ l: n* W  Z: l
2, 画图过程结束后,将 Framebuffer 内容传输到 LCD GRAM' Q6 Y8 Q' ~1 W2 X5 V' r
3, 由 LCD controller 将 GRAM 内容显示到屏幕
4 U' O" [* K$ `  j# c
3 O6 _8 s. {2 o0 x& }0 K
如果使用完整的 framebuffer,在上面第 2 步进行传输时,每次传输的都是一整屏的数据。而在很多场景中,LCD 屏幕上变化的区域并不大。比如一个控制界面,可能只有一个小图标会有变化,其它区域都保持不变。我们可以只更新屏幕变化的区域。
# u8 j/ U0 [1 O& y部分帧缓冲与此类似,framebuffer 可以被分成许多个小的缓存块去更新和传输,而这些小块的缓存可以被重用,这样可以极大的减小图形应用对内存的需求。而使用 partial framebuffer 的方式,仅有稍许限制:
) y) N) m6 N. c1, LCD 模块必需要内置 GRAM
7 I, z% a. e0 K  p0 G2, 在复杂界面时可能会有撕裂效果6 N" `+ d: ?: s, j) |
2 l6 k9 P% ~- y3 [- _2 I
部分帧缓冲在 STM32G071 上的应用
+ J2 ]7 }! q, `* @7 y. f+ Z目标板上的 STM32G071 内置 128K flash,36K SRAM,外接 SPI 接口的 LCD,分辨率 240x320 像素,16 位色。按此 LCD 的分辨率,要支持 TouchGFX 图形应用,必须使用部分帧缓冲特性。- D2 H! s7 N) _' P. Y/ T

4 ?! l3 X" N2 c. x" |
配置过程
9 P4 L; Q3 ^" b整个配置过程主要包括以下四个方面:
% c0 ?" q! f/ T9 V% U一、在 CubeMX 中,配置 TouchGFX generator 的 display 属性如下图:
" m. S( e* D, u! v 9U48ZJRGV[})~8Q`{OQ`]T6.png $ u1 d+ V. A" l/ n& k3 r
! W) a/ W2 ~9 I& \
缓冲块个数和缓冲块大小都可以根据需要调整" g5 @; \' ^' @. V
% ^# x. V& [/ p% g4 N
/ X; m6 B. v! R1 `. s
NL]D)L~F}{20Q92U94Z6N75.png
+ ?4 u' d- Q; }* f) l% X6 d1 z0 x' T. a4 T  r1 \+ q$ N
二、配置完成后,先由 CubeMX 生成代码。可以看到,会生成 TouchGFX 目录,以及该目录下的配置文件与部分源码文件。2 w5 f; g5 L' W2 y

) @: o) a: ?% m %BMHLSDS5WF{)UK~8HRI2HG.png $ I8 p; e2 N+ t
三、打开 ApplicationTemplate.touchgfx.part 文件,即可打开 TouchGFX Designer 工具,如下图。比如,可以添加box 控件作为背景,textArea 控件来显示文本。
( c+ y9 K1 L9 S5 [1 h1 O! p# e$ w  K4 p+ U' v% ]
}U]B28(CY}(B5X4RSSR(P93.png " R" p* {& P$ S# \, i
然后通过 Generate Code 生成 UI 相关的代码,主要包含 generated 和 gui 两个目录。generated 目录包含生成的资源文件,如字体信息、文本信息、图片资源等,还包括各个 screen 的基类代码。而 gui 目录则包含 screen 的派生类代码。用户可基于 gui 目录进行 UI 后续的开发。9 u' z( _4 ]2 z, v+ L* _

/ G8 w9 e. r# P* u2 D7 l% y* A6 C8 \& E
@J}]NR~L`KZ)`VIZ584VG(7.png
/ i% J4 t) K9 g# ]8 |; n0 }" `- ^; b4 J
完整版请查看:附件 基于低成本STM32的图形应用v1.pdf (540.18 KB, 下载次数: 6)
收藏 评论0 发布时间:2023-6-19 14:07

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版