客户在使用 TouchGFX开发 GUI应用的时候, 需要很多的图片资源来呈现友好的人机交互功能, 因此外扩了一个 FLASH来存储图片资源. 在软件研发后期发现现有的 FLASH存储空间不够, 因此提出是否可以使用 TouchGFX来减少图片资源的存储空间且实现同样的 UI效果.: D* W2 W+ m" ?, Y' @) a
01调研0 M" W1 z3 ~4 q0 \; a% Z# Q ( h7 U+ c! `: M# h5 l0 e) [% J # 在硬件方面 $ t! x' y2 T1 v/ H# x+ o1 x & R9 U3 t6 b# g, r0 I+ b) g MCU 的图像处理加速器DMA2D 中的调色板的颜色格式 , 支持 L8 格式的图层之间的渲染:4 I5 ~6 V6 T: L7 n
# 从软件方面5 v. Q" Y. g8 ~9 y 最新的 TouchGFX4.12.3 开始, 可以利用了 DMA2D 的调色板功能对图片的资源进行优化 . # 比如下图(宽 x 高=200x200) 1. 这幅图是由 256 种颜色组成的.5 x) L* L. D6 d. b3 O 2. 且每种颜色都针对图像进行了优化.- K% ~. C5 |/ t$ H# w 3. 256 种索引颜色中的每一种都是 24 位颜色.
0 z1 x! \4 K- f" f 1. L8_ARGB8888 :9 [0 h/ @* p5 R' W) V 200x200x1byte+256x4byte=41024bytes! ^" N0 N) v( q4 p 1 ^, I2 l# w2 X- N =>200x200 个 8bit 的颜色索引+256 个 32bit
) h, J5 |8 u( [" T. s9 N3 C 2. ARGB8888 : 200x200x4byte=160000bytes. =>200x200 个 32bit 的颜色0 g1 e% t3 o& s1 \2 D4 j i) Z5 |4 b1 f8 A7 e 在 TouchGFX 中使用 L8 Image ,只需要将 L8 的图片拖入到 TouchGFX Designer 中,然后在Image 页面中选择正确的格式 :
注意 :如果图片超过 256 颜色,转换工具就会报错,因此可以使用图片工具(如; g9 l! t' G, \4 L# K# I- t3 { * ?" x, C6 x8 }( q$ n) m# _ & K; O0 y" `% ~& Z+ y6 a7 h% i paint.net/imagemagick)将颜色数减少至少于 256 色 : - X5 g( \/ e9 O4 N" y5 |6 R Paint.net:7 Z& f) m8 V5 m; @/ b4 k
02结论! }6 G6 V1 M% t5 |% p' k - @5 t8 v( [ e2 {% o1 P7 Q 7 b& `+ R/ _$ |; s# C: H 图像使用 L8 格式时占用的 flash 大小显著低于标准 24 位格式(RGB888)的原始图像。下表列出了这三种不同调色板格式的具体图像的 flash 使用情况(图片分辨率 200x200):
; @" d' w1 ?- A0 Q/ E , A G6 ]8 k& L9 z5 L* ~ 综上可以看出,采用 TouchGFX4.12.3+L8 格式 : . p/ I: B- ?0 B/ v1 R W 1. 相比较 ARGB8888 像素格式, L8 大幅降低了资源文件的大小, 从而降低对存储芯片的需求 . 2. 同时由于图片像素信息大幅减少,读写一张图片的速度也大大提高, 也提高了系统实时性能. 2 D( m2 Z4 O. n9 u, H 03处理 因此我们建议客户选择使用 TouchGFX4.12.3+L8 的功能,通过重新优化部分资源文件,减少图片资源的存储空间来实现客户的 UI 效果,并且改善了系统的实时性能.3 x: [8 R6 G$ A7 a { * D0 t2 z2 |" D3 u2 I3 X' o# | |
学习![]() |
STM32 GUI 图形方案,带你解锁嵌入式界面开发新思路
4-开发生态篇:TouchGFX+STM32Cube 一站式 GUI 落地流程
3-产品选型篇:全系列 STM32 GUI 专用 MCU 分级选型表
2-架构革新篇:STM32单芯片嵌入式GUI核心技术原理与性能优势
【福利三:逢7发帖赢大礼】使用MPU6050模块、img_dsc、img_btn机制实现一些简单有趣的动画效果
【福利三:逢7发帖赢大礼】使用arc弧形拉条控件控制PWM舵机及使用SPI3接口操作NRF24L01模块进行无线通信
1-趋势痛点篇:嵌入式 GUI 爆发,传统外挂存储架构的多重工程瓶颈
告别外置存储!大容量内存单芯片MCU,重塑新一代嵌入式GUI
【福利三:逢7发帖赢大礼】调试nucleo-WBA65RI工程测试样板的一些心得
【福利三:逢7发帖赢大礼】lv_timer和BME680实现温度、湿度、气压数据读取
微信公众号
手机版