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

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

[复制链接]
STMCU小助手 发布时间:2022-2-18 22:56
前言
( ?: S! l  c2 j8 D6 K* H伴随着 GUI 应用在嵌入式领域比重日益增加,STM32 专门提供了 DMA2D、LTDC 以及 DSI 等外设,能够实现优良的 GUI 解决方案。本文主要围绕 STM32 的 DMA2D 和 LTDC 展开讨论,介绍图片 ALPHA 通道的处理事项。
3 ]& t/ A9 C3 {  X2 R. cALPHA 通道简述; A$ O+ c! D1 s3 T9 d+ @! h6 n6 O
ALPHA 通道是指一张图片的透明和半透明度。不同颜色格式的图片,具备的 ALPHA 通道位数有所区别,本文围绕 8 位的 ALPHA 通道展开介绍。如下图,为 ALPHA 通道的几种实例。其中透明度由ALPHA 通道值决定。( \& S. |6 ~, w6 i. `& x9 H% C

5 G  Q: Z# S+ T4 R5 p BER)E]0249%(B(JT[27@3FV.png + w4 N( [+ J* m* Z
$ }/ u: [9 ?: U4 {" `5 Q% a
STM32 图片显示方案介绍
) |9 X! M. A& i* s& f* U为了更好的阐述 ALPHA 通道的作用及相关处理,先对 STM32 的图片显示进行简单介绍。以支持 DMA2D 和 LTDC 的 STM32 为例,图片的数据流如下图所示(为简化介绍,仅以图片生成像素数据,直接对像素数据进行显示的图片显示方案为例)。( `1 h9 B6 ~" G5 G1 e
. ~( T' Q, Z! [
$X]$W8YELFZ8(G8T]7`BA24.png
: u  X/ x# q$ P# a. i) y
( r2 k( @& m6 h: |首先利用 PC 端工具,将图片转为包含像素数据的文件(例如 STemWin 中提供的 bmpCvt.exe 或者bmpCvtST.exe 工具,能够将图片导出为包含像素数据的.c 文件)。编译链接生成烧录文件,烧录时,对应的像素数据保存到 ROM 中。然后利用 DMA2D 实现图片资源的转移,转移到在 RAM 中开辟的显示缓存空间中。最后,LTDC 访问对应的显示缓存空间,实现对 RGB 接口显示屏的内容刷新,从而实现图片的显示。+ R* ]$ d6 Q' V# _

( ^& b9 o2 N( T1 v' x& }0 t& uSTM32 ALPHA 通道处理$ U$ e- a7 }/ i0 f, s4 m
上述例中,涉及到两种 STM32 内部外设 DMA2D 和 LTDC,内部框架如下图所示。
5 k& G) ^8 _/ y" P- i6 T# v* k% V7 s0 }( C" E
TPPWSA353WG{M1Q}{X{8XNX.png 3 A1 T# ^1 {( h# w( R9 g
; [6 n: T% j' F% P3 x4 F+ y
从图中可以了解到,ALPHA 通道在 DMA2D 和 LTDC 中都能进行处理。具体在像素格式转化和混合中处理。
' ^; J4 v7 [$ v下面围绕 ALPHA 通道处理,分环节进行描述。
' c4 p# r/ l9 }, m5 C) G) N0 R. N0 _0 z% I
7 w* V6 B3 v# q0 J
PC 端处理# o7 a" R3 G2 O. @, y( X
ALPHA 通道在电脑端的处理,除了应用效果上的处理外,主要注意图片导出像素信息时,与硬件平台匹配。, D) K# L9 @" C# J
例如,bmpCvtST.exe 工具为 32 位真彩色图片,提供了如下两种导出类型。bmpCvtST.exe 是bmpCvt.exe 的 ST 版,能够更好的支持 STM32 平台上图片应用开发。
! Q/ a3 A9 G5 e8 D1 y) K+ n/ u; a" o$ u9 D( d
%OAF%LQH5{YZQ{Y(80$LY$F.png 2 y: c+ H8 y* z- y
/ _$ W1 c( c1 F5 N6 z
. s4 X  M# X% i5 ?8 Z  a
具体导出何种类型的图片数据.c 文件,需要根据采用的 STM32 DMA2D 外设支持情况进行确定。将在DMA2D 处理小结进行说明。一般情况下,ARGB 格式与全部支持 DMA2D 和 LTDC 的 STM32 硬件平台匹配。; k: E3 \: }: }% I- ~
4 }0 |4 v( s$ H% L3 E
DMA2D 上处理
5 g+ y$ S3 O( r; n$ ?/ E如上图,在利用 DMA2D 进行数据的转移、填充等过程中,支持对 ALPHA 通道值的更改。在像素格式转换环节,通过 DMA2D_xxPFCCR 寄存器的配置实现,支持如下三种形式:
/ D8 E% T( E5 L* H: K9 S1. 保留像素信息原 ALPHA 通道值
. L' c4 a8 X" K4 }3 s2 L5 {7 \2. 利用 ALPHA@DMA2D_xxPFCCR 替换原 ALPHA 通道值6 K6 D* s+ l: j$ i  Y. g
3. 利用原 ALPHA 通道值* ALPHA@DMA2D_xxPFCCR / 255 替换原 ALPHA 通道值另外,某些 STM32 的 DMA2D 提供了 ALPHA 通道值取反、RED 通道与 BLUE 通道互换的功能,具体请根据对应 STM32 的参考手册了解是否支持。具有这种功能的 STM32 能够匹配上面描述的 ABGR 类型。! w/ [; _! v) X4 F4 I/ F
在混合环节,虽然涉及到 ALPHA 通道,但表现为遵循固定的混合公式进行通道混合。在这里不做讨论,
+ {1 B% @  z. g! {8 L详情请参考对应参考手册的 DMA2D blender 章节。
' c* r+ R( z; E( ?! A7 j+ v& Q  u5 Z( C
LTDC 上处理
$ U5 p- K' d9 W! y2 B& P7 ]   像素格式转化环节,并不涉及可配置的 ALPHA 通道处理,这里不做讨论。在混合环节,能够根据不同的混合因子,对各层混合时 ALPHA 通道进行不同的处理, 实现不同的效果。各层混合流程如下图,采用自下而上的混合方式。
& i3 t3 s# ~8 p7 h6 `: [  _" E9 p7 V9 p# v, ?$ [; q# T2 w% _7 Y$ _0 a" b
B$C`PVIF%@@K32A$NKQ3OZR.png . `+ l/ K* o9 h, y# [1 ]! L
& t/ z6 z3 \/ [: k; @
   层间混合遵循如下公式:
6 Y" r9 L7 a0 z! Y   BC = BF1 x C + BF2 x Cs
2 ]$ v; C# J8 i6 U5 _/ f* ?/ g   其中: BC = 混合颜色+ w- v& P7 X8 n& {! \- r
              BF1 = 混合因子 1, a2 L  C5 r1 Y. P1 x& K6 h
              C = 当前层颜色2 K. O% @4 F# h0 b
             BF2 = 混合因子 2
; W% k7 a- H% ~: W; @             Cs = 下层混合颜色
* |( W% P' g* y/ \/ E) D- `   涉及到的参数,可以进行如下可选的配置,从而执行不同的层级颜色混合。其中 BF1、BF2 因子决定了对应 ALPHA 通道处理。
, c7 Q5 O# s6 f( f% l% f  d4 @, h- k) o3 Y; j, a/ P5 q/ s/ |0 C, N
[W~ERT5OJ55B71QIM4GCK0S.png 3 L- Y6 I- c2 i4 P: X
0 s5 ?5 V5 g4 c: r: A
   例如:当配置层 2 参数 BF1 = 0b100, BF2= 0b100,CONSTA=0xFF 时,BC = C。显示效果为不论图片中 ALPHA 通道值,只显示对应区域上层 2 的图片,其它层颜色不显示。
6 m* u" `; Z, r' o* C/ v) q8 _4 E1 R" @  a7 G* Z0 n" V
总结0 o4 \7 a" \- |$ o$ v# j
图片的转化显示虽然简单,但由于涉及到不同平台,需要注意匹配性问题。实际实现过程中,需要对各环节有一定程度的了解,从而实现同样的显示效果。需知,上述的 STM32 GUI 方案描述,是针对支持 DMA2D 和 LTDC 的 STM32。同时,为了聚焦于 ALPHA 通道的介绍,仅以图片生成的.c 文件为例,介绍图片显示方案。除此之外,STM32 还提供了其他丰富的 GUI 方案,能够直接支持各种格式的图片,例如.bmp, .png,.jpg 等。4 v3 c' a0 i' p# }1 q
( N' D& A; `) R& ^2 s
赞 收藏 评论0 发布时间:2022-2-18 22:56

举报

0个回答

所属标签

相似技术帖

官网相关资源

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