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

【实战经验】GUI方案中ALPHA通道处理介绍

[复制链接]
zero99 发布时间:2017-1-4 17:03
前言3 Y4 T# p5 e# Z& l5 T0 h& d
伴随着GUI应用在嵌入式领域比重日益增加,STM32专门提供了DMA2D、LTDC以及DSI等外设,能够实现优良的GUI解决方案。本文主要围绕STM32的DMA2D和LTDC展开讨论,介绍图片ALPHA通道的处理事项。
0 |2 J" U" a3 }$ _; A3 c$ X: N, d5 N5 s  g# F6 ?0 G" `( P
ALPHA通道简述
) u; X% Y6 F6 y" dALPHA通道是指一张图片的透明和半透明度。不同颜色格式的图片,具备的ALPHA通道位数有所区别,本文围绕8位的ALPHA通道展开介绍。如下图,为ALPHA通道的几种实例。其中透明度由ALPHA通道值决定。
, B2 ~" J$ Y  s. U$ ^
31.jpg
4 r* Q2 e3 _6 I/ G3 s, V1 \6 k. e2 h, i# g# R* s& k) h6 o5 Y
STM32图片显示方案介绍2 p1 B; Q6 ~$ a5 ?' ]# {/ `* u
为了更好的阐述ALPHA通道的作用及相关处理,先对STM32的图片显示进行简单介绍。+ a2 g! K+ ^$ D  F. {
以支持DMA2D和LTDC的STM32为例,图片的数据流如下图所示(为简化介绍,仅以图片生成像素数据,直接对像素数据进行显示的图片显示方案为例)。
& Q7 c* M  l* U% \
32.jpg 1 R: Q, c3 k/ S8 S4 z5 O% v: q
首先利用PC端工具,将图片转为包含像素数据的文件(例如STemWin中提供的bmpCvt.exe或者bmpCvtST.exe工具,能够将图片导出为包含像素数据的.c文件)。编译链接生成烧录文件,烧录时,对应的像素数据保存到ROM中。然后利用DMA2D实现图片资源的转移,转移到在RAM中开辟的显示缓存空间中。最后,LTDC访问对应的显示缓存空间,实现对RGB接口显示屏的内容刷新,从而实现图片的显示。3 t; U6 S; Q: [* k8 A9 i9 `  H
# i% v' N$ q8 R% _9 F
STM32 ALPHA通道处理
2 b) |! ^3 N3 z9 w上述例中,涉及到两种STM32内部外设DMA2D和LTDC,内部框架如下图所示。7 p: N# K7 ?/ k" ^
33.jpg ( ]& I& r- g4 H1 b1 b5 ~) d
从图中可以了解到,ALPHA通道在DMA2D和LTDC中都能进行处理。具体在像素格式转化和混合中处理。
: C% K, E0 A% C$ O1 r$ x* t下面围绕ALPHA通道处理,分环节进行描述。9 V0 J; ^. i* I/ L

! b% a9 r" j9 sPC端处理
( E0 C8 i# C2 pALPHA通道在电脑端的处理,除了应用效果上的处理外,主要注意图片导出像素信息时,与硬件平台匹配。5 I6 @7 m5 K0 l2 V; b8 V9 I. f
例如,bmpCvtST.exe工具为32位真彩色图片,提供了如下两种导出类型。bmpCvtST.exe是bmpCvt.exe的ST版,能够更好的支持STM32平台上图片应用开发。
  Z. Z$ {' b2 L! K; N+ C
34.jpg , i+ D; e! c0 d1 ?' Y  q8 C
具体导出何种类型的图片数据.c文件,需要根据采用的STM32 DMA2D外设支持情况进行确定。将在DMA2D处理小结进行说明。一般情况下,ARGB格式与全部支持DMA2D和LTDC的STM32硬件平台匹配。; F2 o* d& i( J2 h8 T9 C
DMA2D上处理" |8 `8 x/ H( O+ w
如上图,在利用DMA2D进行数据的转移、填充等过程中,支持对ALPHA通道值的更改。在像素格式转换环节,通过DMA2D_xxPFCCR寄存器的配置实现,支持如下三种形式:( T/ [/ e0 k8 ^" T- O8 ^
1. 保留像素信息原ALPHA通道值
5 M  a9 y# e! ^- p1 \' q2. 利用ALPHA@DMA2D_xxPFCCR替换原ALPHA通道值
) E! B8 }: {% C3 q/ T5 H3. 利用原ALPHA通道值* ALPHA@DMA2D_xxPFCCR / 255 替换原ALPHA通道值
, i, ?9 o5 D8 k' {  t( T另外,某些STM32的DMA2D提供了ALPHA通道值取反、RED通道与BLUE通道互换的功能,具体请根据对应STM32的参考手册了解是否支持。具有这种功能的STM32能够匹配上面描述的ABGR类型。
* L4 c% M. _. p& K- y  |3 b在混合环节,虽然涉及到ALPHA通道,但表现为遵循固定的混合公式进行通道混合。在这里不做讨论,详情请参考对应参考手册的DMA2D blender章节。
/ f* R* `; t5 jLTDC上处理
# ?1 Q, I+ s4 \; y像素格式转化环节,并不涉及可配置的ALPHA通道处理,这里不做讨论。
! v+ B8 ?! z5 i在混合环节,能够根据不同的混合因子,对各层混合时ALPHA通道进行不同的处理, 实现不同的效果。各层混合流程如下图,采用自下而上的混合方式。8 v# K0 f* [; C. w( m
35.jpg 7 r4 p9 w  F% o, n% [2 M# {8 U
层间混合遵循如下公式:
* C, I- E* D  XBC = BF1 x C + BF2 x Cs6 a( J3 y6 a* F. S
其中: BC = 混合颜色
1 F- S$ p, z1 _. e. x2 NBF1 = 混合因子1
' E9 D# Q5 C/ E' v3 t+ y/ qC = 当前层颜色
- Y) B3 b! v8 s( _3 |& h# L( NBF2 = 混合因子2, j5 k* B2 g$ S% M; M# b* t7 _
Cs = 下层混合颜色
( P1 k3 g& H) X5 z, b$ T$ G6 I$ t' A4 r涉及到的参数,可以进行如下可选的配置,从而执行不同的层级颜色混合。其中BF1、BF2因子决定了对应ALPHA通道处理。3 }/ q  o: f" d) k- ^
36.jpg 7 R9 H1 O5 P3 F  ^2 g
例如:当配置层2参数BF1 = 0b100, BF2= 0b100,CONSTA=0xFF时,BC = C。显示效果为不论图片中ALPHA通道值,只显示对应区域上层2的图片,其它层颜色不显示。
7 X" X( {2 s2 h" }. z3 R4 |! `6 x& K* g; u* l' B- R$ @% I" C
总结
0 s0 }9 U2 ]5 M图片的转化显示虽然简单,但由于涉及到不同平台,需要注意匹配性问题。实际实现过程中,需要对各环节有一定程度的了解,从而实现同样的显示效果。需知,上述的STM32 GUI方案描述,是针对支持DMA2D和LTDC的STM32。同时,为了聚焦于ALPHA通道的介绍,仅以图片生成的.c文件为例,介绍图片显示方案。除此之外,STM32还提供了其他丰富的GUI方案,能够直接支持各种格式的图片,例如.bmp, .png,.jpg等。

4 H2 m) \$ [" G7 N. Y: y, t& |; I5 K5 O1 c% Q% X* _5 K
$ t! ]; h! R! J" K6 |% Q; Q
文档下载' \" _$ X0 ], b+ s" l

& Y4 S+ F) D( Y* w; x更多实战经验6 l0 c/ q; b2 M7 O  k
; V3 _6 h, k. U( l3 |; q" K
* Z6 {# n/ t- \, ?
赞 收藏 2 评论5 发布时间:2017-1-4 17:03

举报

5个回答
jackten 回答时间:2017-1-4 18:07:23
谢谢分享                                      
leo121_3006061 回答时间:2017-1-4 20:21:30
谢谢分享
五哥1 回答时间:2017-1-4 23:11:26
这个有些 木有看懂
5265325 回答时间:2017-1-5 08:39:32
andypanfan 回答时间:2017-1-5 08:59:55
谢谢分享

所属标签

相似技术帖

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