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

【经验分享】GUI 方案中 ALPHA 通道处理介绍

[复制链接]
STMCU小助手 发布时间:2022-2-18 22:56
前言
2 p- K: c  ?1 A伴随着 GUI 应用在嵌入式领域比重日益增加,STM32 专门提供了 DMA2D、LTDC 以及 DSI 等外设,能够实现优良的 GUI 解决方案。本文主要围绕 STM32 的 DMA2D 和 LTDC 展开讨论,介绍图片 ALPHA 通道的处理事项。
# N, D+ a% {0 x( {$ oALPHA 通道简述$ ]( o5 E5 r) M4 ?. ^7 e: d
ALPHA 通道是指一张图片的透明和半透明度。不同颜色格式的图片,具备的 ALPHA 通道位数有所区别,本文围绕 8 位的 ALPHA 通道展开介绍。如下图,为 ALPHA 通道的几种实例。其中透明度由ALPHA 通道值决定。
5 Q# |5 Z8 V5 }& s
" M& Y- r" {$ N: b7 o3 D) p BER)E]0249%(B(JT[27@3FV.png
% k4 g/ D3 `4 ?
7 g" Y/ @8 U% HSTM32 图片显示方案介绍
1 F5 I9 b/ u* s: {; p. Y3 M为了更好的阐述 ALPHA 通道的作用及相关处理,先对 STM32 的图片显示进行简单介绍。以支持 DMA2D 和 LTDC 的 STM32 为例,图片的数据流如下图所示(为简化介绍,仅以图片生成像素数据,直接对像素数据进行显示的图片显示方案为例)。
! R3 U( T, q: E4 f/ O; G/ n& v  \# i
$X]$W8YELFZ8(G8T]7`BA24.png
9 Q/ [" u9 K0 a. C1 e) r8 E4 B- ~: b; c
首先利用 PC 端工具,将图片转为包含像素数据的文件(例如 STemWin 中提供的 bmpCvt.exe 或者bmpCvtST.exe 工具,能够将图片导出为包含像素数据的.c 文件)。编译链接生成烧录文件,烧录时,对应的像素数据保存到 ROM 中。然后利用 DMA2D 实现图片资源的转移,转移到在 RAM 中开辟的显示缓存空间中。最后,LTDC 访问对应的显示缓存空间,实现对 RGB 接口显示屏的内容刷新,从而实现图片的显示。, C+ O; [  R% G' j+ S. U3 a
9 P, \2 `  }4 E& ^, w1 N
STM32 ALPHA 通道处理
: d) X$ [4 v! h上述例中,涉及到两种 STM32 内部外设 DMA2D 和 LTDC,内部框架如下图所示。& B. j8 C- G. z# W
7 [& G$ S) b) ]2 e- M9 V: ^7 p) R
TPPWSA353WG{M1Q}{X{8XNX.png
6 f# Y( ?; M& ~; z% U7 b) ^5 Q
4 D2 F; ?! f( I4 Q- b3 i3 i8 z( L. F从图中可以了解到,ALPHA 通道在 DMA2D 和 LTDC 中都能进行处理。具体在像素格式转化和混合中处理。
4 a/ H. M( g  {% f  Q2 ]下面围绕 ALPHA 通道处理,分环节进行描述。) D6 Y( P" ]; ^3 }1 G; Q( S+ ]

8 m, Y( W- t, s2 u' p1 ?
" O; B4 N6 z. ~& A# fPC 端处理0 ?, |5 B( B; y5 P4 Z  a0 d
ALPHA 通道在电脑端的处理,除了应用效果上的处理外,主要注意图片导出像素信息时,与硬件平台匹配。7 z( a) W9 @) l, I
例如,bmpCvtST.exe 工具为 32 位真彩色图片,提供了如下两种导出类型。bmpCvtST.exe 是bmpCvt.exe 的 ST 版,能够更好的支持 STM32 平台上图片应用开发。8 _) X9 ]& x$ Z$ R# n7 m
6 r$ B* `$ p; [1 f
%OAF%LQH5{YZQ{Y(80$LY$F.png * O' c8 f7 X3 g( l9 c, q  p+ M) u

, K) P4 v$ j! J6 A. P! o: y9 m) q2 `2 n" v
具体导出何种类型的图片数据.c 文件,需要根据采用的 STM32 DMA2D 外设支持情况进行确定。将在DMA2D 处理小结进行说明。一般情况下,ARGB 格式与全部支持 DMA2D 和 LTDC 的 STM32 硬件平台匹配。
9 c' P: W! f$ d4 ~! A  U' t0 v6 o  ~$ ?+ A: j4 ^/ L
DMA2D 上处理3 B% k3 g. T) ~$ I7 S
如上图,在利用 DMA2D 进行数据的转移、填充等过程中,支持对 ALPHA 通道值的更改。在像素格式转换环节,通过 DMA2D_xxPFCCR 寄存器的配置实现,支持如下三种形式:
8 ]' m1 O' M0 i& Q1. 保留像素信息原 ALPHA 通道值7 F- K$ a* q. c# \( Z/ O6 _
2. 利用 ALPHA@DMA2D_xxPFCCR 替换原 ALPHA 通道值
3 j7 ]# ~( {$ x3. 利用原 ALPHA 通道值* ALPHA@DMA2D_xxPFCCR / 255 替换原 ALPHA 通道值另外,某些 STM32 的 DMA2D 提供了 ALPHA 通道值取反、RED 通道与 BLUE 通道互换的功能,具体请根据对应 STM32 的参考手册了解是否支持。具有这种功能的 STM32 能够匹配上面描述的 ABGR 类型。
% X7 D; W; T: R/ U在混合环节,虽然涉及到 ALPHA 通道,但表现为遵循固定的混合公式进行通道混合。在这里不做讨论,
+ t7 U9 l! R5 Z  I8 h详情请参考对应参考手册的 DMA2D blender 章节。. u& C2 ^2 M( ?8 u

$ _8 C/ G1 U6 P; K- M& @# tLTDC 上处理
, e; _! Z6 e: r+ u% o' u# a   像素格式转化环节,并不涉及可配置的 ALPHA 通道处理,这里不做讨论。在混合环节,能够根据不同的混合因子,对各层混合时 ALPHA 通道进行不同的处理, 实现不同的效果。各层混合流程如下图,采用自下而上的混合方式。
2 K4 h( T* r* T- S/ n, M0 s0 h: \1 v* v. C
B$C`PVIF%@@K32A$NKQ3OZR.png ( K7 N* N" ]3 S! `, n% I

) Q9 m/ n) t& k  s8 [$ X" T1 f   层间混合遵循如下公式:5 \9 m1 B& S, h6 E) r
   BC = BF1 x C + BF2 x Cs
2 X' L9 {$ t  t' A   其中: BC = 混合颜色
7 r, R3 o: d# |8 d' ~              BF1 = 混合因子 1
: e: K; M) J# q$ i! G8 S' X6 ?              C = 当前层颜色9 c  B; G! I7 z. B# B0 U) c
             BF2 = 混合因子 24 y5 S4 c+ B1 b* E% F
             Cs = 下层混合颜色
9 U  r" z3 k  `: I& m" C   涉及到的参数,可以进行如下可选的配置,从而执行不同的层级颜色混合。其中 BF1、BF2 因子决定了对应 ALPHA 通道处理。
5 J2 |2 h1 T5 ?
) q; u0 U8 j$ ~/ b- m3 x [W~ERT5OJ55B71QIM4GCK0S.png % L  S7 ~* c1 n8 T2 m: j  e8 w- }
! O: X  K9 y' F, d8 K3 Y+ V
   例如:当配置层 2 参数 BF1 = 0b100, BF2= 0b100,CONSTA=0xFF 时,BC = C。显示效果为不论图片中 ALPHA 通道值,只显示对应区域上层 2 的图片,其它层颜色不显示。. I  [& u/ d) J! y9 p

7 M$ Y3 k- Z4 G" E0 c总结) g9 n. B4 T8 M0 `0 {
图片的转化显示虽然简单,但由于涉及到不同平台,需要注意匹配性问题。实际实现过程中,需要对各环节有一定程度的了解,从而实现同样的显示效果。需知,上述的 STM32 GUI 方案描述,是针对支持 DMA2D 和 LTDC 的 STM32。同时,为了聚焦于 ALPHA 通道的介绍,仅以图片生成的.c 文件为例,介绍图片显示方案。除此之外,STM32 还提供了其他丰富的 GUI 方案,能够直接支持各种格式的图片,例如.bmp, .png,.jpg 等。2 P6 ?# A1 K% g6 S1 N
9 w6 O6 o2 S2 J2 e  m7 H+ d0 _+ R$ d
收藏 评论0 发布时间:2022-2-18 22:56

举报

0个回答

所属标签

相似分享

官网相关资源

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