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

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

[复制链接]
STMCU小助手 发布时间:2022-2-18 22:56
前言
' _+ F% E5 j6 |伴随着 GUI 应用在嵌入式领域比重日益增加,STM32 专门提供了 DMA2D、LTDC 以及 DSI 等外设,能够实现优良的 GUI 解决方案。本文主要围绕 STM32 的 DMA2D 和 LTDC 展开讨论,介绍图片 ALPHA 通道的处理事项。
, K& H& r+ i' E1 q! N8 hALPHA 通道简述
/ d8 S4 m$ A) a2 EALPHA 通道是指一张图片的透明和半透明度。不同颜色格式的图片,具备的 ALPHA 通道位数有所区别,本文围绕 8 位的 ALPHA 通道展开介绍。如下图,为 ALPHA 通道的几种实例。其中透明度由ALPHA 通道值决定。" c3 e5 ^) a# g! U! |* a
/ p# ~  b2 S9 H! v' B* L3 N5 f1 ^
BER)E]0249%(B(JT[27@3FV.png
7 X0 C1 x9 W- }  N. V, U
7 s- [4 Z, _9 Y) b- A8 {STM32 图片显示方案介绍
0 f; n$ Q! M0 H5 w& L为了更好的阐述 ALPHA 通道的作用及相关处理,先对 STM32 的图片显示进行简单介绍。以支持 DMA2D 和 LTDC 的 STM32 为例,图片的数据流如下图所示(为简化介绍,仅以图片生成像素数据,直接对像素数据进行显示的图片显示方案为例)。
4 o' T* j! e  z+ G8 K" F+ F
, l# z( ?0 ^! |6 y5 l2 R0 I/ I $X]$W8YELFZ8(G8T]7`BA24.png ; X' u* F' t: v

6 C& Z2 g4 s- i! F首先利用 PC 端工具,将图片转为包含像素数据的文件(例如 STemWin 中提供的 bmpCvt.exe 或者bmpCvtST.exe 工具,能够将图片导出为包含像素数据的.c 文件)。编译链接生成烧录文件,烧录时,对应的像素数据保存到 ROM 中。然后利用 DMA2D 实现图片资源的转移,转移到在 RAM 中开辟的显示缓存空间中。最后,LTDC 访问对应的显示缓存空间,实现对 RGB 接口显示屏的内容刷新,从而实现图片的显示。
; ?" d* [0 o5 p! v0 @: C/ J5 {$ Q; n2 D* m  X0 I* a5 b7 d6 ?& u
STM32 ALPHA 通道处理
5 w' X9 `0 J9 n$ I$ A" J+ h9 X上述例中,涉及到两种 STM32 内部外设 DMA2D 和 LTDC,内部框架如下图所示。, P. S$ h. k2 G5 ~

0 r% @, h; j' ~ TPPWSA353WG{M1Q}{X{8XNX.png ( c6 \* [# C" V' b! j+ i
" O1 g+ \& v0 w, Z- N* R/ o, W- s
从图中可以了解到,ALPHA 通道在 DMA2D 和 LTDC 中都能进行处理。具体在像素格式转化和混合中处理。
) A' Q' X" C, y( B! s下面围绕 ALPHA 通道处理,分环节进行描述。1 Y5 N$ C, x7 C" T4 {2 Z! l, I
! q% a3 }* j7 o7 k. o
' h& y+ v# ^2 Z) D# S! j- ^6 V
PC 端处理
$ j8 d# S7 C+ }ALPHA 通道在电脑端的处理,除了应用效果上的处理外,主要注意图片导出像素信息时,与硬件平台匹配。2 T. j; D9 _. L$ }2 n: _. s
例如,bmpCvtST.exe 工具为 32 位真彩色图片,提供了如下两种导出类型。bmpCvtST.exe 是bmpCvt.exe 的 ST 版,能够更好的支持 STM32 平台上图片应用开发。) c8 w. _- B7 [! S- K6 [- [

4 Q' E2 _! G1 P %OAF%LQH5{YZQ{Y(80$LY$F.png + K, T/ ]# X! y, Y

6 Q7 N) X  N1 Z# G# S7 l# M) Q$ }" N# `9 f2 _
具体导出何种类型的图片数据.c 文件,需要根据采用的 STM32 DMA2D 外设支持情况进行确定。将在DMA2D 处理小结进行说明。一般情况下,ARGB 格式与全部支持 DMA2D 和 LTDC 的 STM32 硬件平台匹配。
% F( c' m/ o0 ^" ]5 [* o3 _" g0 |* I( O% i
DMA2D 上处理
6 a& Y* n) t/ @3 \如上图,在利用 DMA2D 进行数据的转移、填充等过程中,支持对 ALPHA 通道值的更改。在像素格式转换环节,通过 DMA2D_xxPFCCR 寄存器的配置实现,支持如下三种形式:
: ]& t, ~: D1 W9 Q8 V3 ~2 W1 K' x1. 保留像素信息原 ALPHA 通道值! {1 s& E' z# v3 \" X8 h+ z
2. 利用 ALPHA@DMA2D_xxPFCCR 替换原 ALPHA 通道值6 d, k' e' z& Q' N' k# h
3. 利用原 ALPHA 通道值* ALPHA@DMA2D_xxPFCCR / 255 替换原 ALPHA 通道值另外,某些 STM32 的 DMA2D 提供了 ALPHA 通道值取反、RED 通道与 BLUE 通道互换的功能,具体请根据对应 STM32 的参考手册了解是否支持。具有这种功能的 STM32 能够匹配上面描述的 ABGR 类型。6 c- ]' J" u; e- \. P* B/ T8 t
在混合环节,虽然涉及到 ALPHA 通道,但表现为遵循固定的混合公式进行通道混合。在这里不做讨论,
; D: [, l+ e' X  ?: T详情请参考对应参考手册的 DMA2D blender 章节。
# s1 b  D* P1 @9 D% [, w1 d
1 V) s  u9 E4 K  }9 @LTDC 上处理0 F! N; B3 b4 |9 H3 h9 o) J4 A& W
   像素格式转化环节,并不涉及可配置的 ALPHA 通道处理,这里不做讨论。在混合环节,能够根据不同的混合因子,对各层混合时 ALPHA 通道进行不同的处理, 实现不同的效果。各层混合流程如下图,采用自下而上的混合方式。2 @  `  a2 @- r+ O
% e0 c6 ]/ C# U& y1 [9 n4 c
B$C`PVIF%@@K32A$NKQ3OZR.png
# X+ b4 F5 F$ }! g
" z) @0 N; b: }2 R6 p! k, j, m3 Q0 ]   层间混合遵循如下公式:
9 U4 t: |  |% }! o7 t3 Y% o   BC = BF1 x C + BF2 x Cs
: Y( M" y3 a' b( h   其中: BC = 混合颜色  K" J% E" V, ?, b4 U4 r( S
              BF1 = 混合因子 1# ^5 D7 Y# K( m; A
              C = 当前层颜色
! k" l  q3 R1 K1 @3 P4 Z, P: L             BF2 = 混合因子 2& Z0 `; ?% h; N3 X' T( H5 {
             Cs = 下层混合颜色# O& S6 O% ~, z, n" `! T% |
   涉及到的参数,可以进行如下可选的配置,从而执行不同的层级颜色混合。其中 BF1、BF2 因子决定了对应 ALPHA 通道处理。
8 O; B, z* h: e0 \& B: ]6 h" o- S) u& Z" B
[W~ERT5OJ55B71QIM4GCK0S.png
+ T5 ^  z. t( s" I
" g2 V; n& N  q. y, V" }. i" C   例如:当配置层 2 参数 BF1 = 0b100, BF2= 0b100,CONSTA=0xFF 时,BC = C。显示效果为不论图片中 ALPHA 通道值,只显示对应区域上层 2 的图片,其它层颜色不显示。
8 p' i% b5 g0 K1 E
+ \$ _5 [, n4 W5 Q% K4 c总结
( p/ T5 M  A8 B图片的转化显示虽然简单,但由于涉及到不同平台,需要注意匹配性问题。实际实现过程中,需要对各环节有一定程度的了解,从而实现同样的显示效果。需知,上述的 STM32 GUI 方案描述,是针对支持 DMA2D 和 LTDC 的 STM32。同时,为了聚焦于 ALPHA 通道的介绍,仅以图片生成的.c 文件为例,介绍图片显示方案。除此之外,STM32 还提供了其他丰富的 GUI 方案,能够直接支持各种格式的图片,例如.bmp, .png,.jpg 等。
1 ~. Q! g" q) t( W2 x1 p3 d$ z/ X4 \( u+ \8 ^" v+ g
收藏 评论0 发布时间:2022-2-18 22:56

举报

0个回答

所属标签

相似分享

官网相关资源

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