搜索
查看: 4824|回复: 5

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

[复制链接]
  • TA的每日心情
    开心
    2018-2-6 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    1182

    主题

    4967

    帖子

    1

    蝴蝶豆

    论坛元老

    最后登录
    2020-3-17
    发表于 2017-1-4 17:03:08 | 显示全部楼层 |阅读模式
    前言
    伴随着GUI应用在嵌入式领域比重日益增加,STM32专门提供了DMA2D、LTDC以及DSI等外设,能够实现优良的GUI解决方案。本文主要围绕STM32的DMA2D和LTDC展开讨论,介绍图片ALPHA通道的处理事项。

    ALPHA通道简述
    ALPHA通道是指一张图片的透明和半透明度。不同颜色格式的图片,具备的ALPHA通道位数有所区别,本文围绕8位的ALPHA通道展开介绍。如下图,为ALPHA通道的几种实例。其中透明度由ALPHA通道值决定。
    31.jpg

    STM32图片显示方案介绍
    为了更好的阐述ALPHA通道的作用及相关处理,先对STM32的图片显示进行简单介绍。
    以支持DMA2D和LTDC的STM32为例,图片的数据流如下图所示(为简化介绍,仅以图片生成像素数据,直接对像素数据进行显示的图片显示方案为例)。
    32.jpg
    首先利用PC端工具,将图片转为包含像素数据的文件(例如STemWin中提供的bmpCvt.exe或者bmpCvtST.exe工具,能够将图片导出为包含像素数据的.c文件)。编译链接生成烧录文件,烧录时,对应的像素数据保存到ROM中。然后利用DMA2D实现图片资源的转移,转移到在RAM中开辟的显示缓存空间中。最后,LTDC访问对应的显示缓存空间,实现对RGB接口显示屏的内容刷新,从而实现图片的显示。

    STM32 ALPHA通道处理
    上述例中,涉及到两种STM32内部外设DMA2D和LTDC,内部框架如下图所示。
    33.jpg
    从图中可以了解到,ALPHA通道在DMA2D和LTDC中都能进行处理。具体在像素格式转化和混合中处理。
    下面围绕ALPHA通道处理,分环节进行描述。

    PC端处理
    ALPHA通道在电脑端的处理,除了应用效果上的处理外,主要注意图片导出像素信息时,与硬件平台匹配。
    例如,bmpCvtST.exe工具为32位真彩色图片,提供了如下两种导出类型。bmpCvtST.exe是bmpCvt.exe的ST版,能够更好的支持STM32平台上图片应用开发。
    34.jpg
    具体导出何种类型的图片数据.c文件,需要根据采用的STM32 DMA2D外设支持情况进行确定。将在DMA2D处理小结进行说明。一般情况下,ARGB格式与全部支持DMA2D和LTDC的STM32硬件平台匹配。
    DMA2D上处理
    如上图,在利用DMA2D进行数据的转移、填充等过程中,支持对ALPHA通道值的更改。在像素格式转换环节,通过DMA2D_xxPFCCR寄存器的配置实现,支持如下三种形式:
    1. 保留像素信息原ALPHA通道值
    2. 利用ALPHA@DMA2D_xxPFCCR替换原ALPHA通道值
    3. 利用原ALPHA通道值* ALPHA@DMA2D_xxPFCCR / 255 替换原ALPHA通道值
    另外,某些STM32的DMA2D提供了ALPHA通道值取反、RED通道与BLUE通道互换的功能,具体请根据对应STM32的参考手册了解是否支持。具有这种功能的STM32能够匹配上面描述的ABGR类型。
    在混合环节,虽然涉及到ALPHA通道,但表现为遵循固定的混合公式进行通道混合。在这里不做讨论,详情请参考对应参考手册的DMA2D blender章节。
    LTDC上处理
    像素格式转化环节,并不涉及可配置的ALPHA通道处理,这里不做讨论。
    在混合环节,能够根据不同的混合因子,对各层混合时ALPHA通道进行不同的处理, 实现不同的效果。各层混合流程如下图,采用自下而上的混合方式。
    35.jpg
    层间混合遵循如下公式:
    BC = BF1 x C + BF2 x Cs
    其中: BC = 混合颜色
    BF1 = 混合因子1
    C = 当前层颜色
    BF2 = 混合因子2
    Cs = 下层混合颜色
    涉及到的参数,可以进行如下可选的配置,从而执行不同的层级颜色混合。其中BF1、BF2因子决定了对应ALPHA通道处理。
    36.jpg
    例如:当配置层2参数BF1 = 0b100, BF2= 0b100,CONSTA=0xFF时,BC = C。显示效果为不论图片中ALPHA通道值,只显示对应区域上层2的图片,其它层颜色不显示。

    总结
    图片的转化显示虽然简单,但由于涉及到不同平台,需要注意匹配性问题。实际实现过程中,需要对各环节有一定程度的了解,从而实现同样的显示效果。需知,上述的STM32 GUI方案描述,是针对支持DMA2D和LTDC的STM32。同时,为了聚焦于ALPHA通道的介绍,仅以图片生成的.c文件为例,介绍图片显示方案。除此之外,STM32还提供了其他丰富的GUI方案,能够直接支持各种格式的图片,例如.bmp, .png,.jpg等。



    文档下载

    更多实战经验


    回复

    使用道具 举报

    该用户从未签到

    10

    主题

    703

    帖子

    0

    蝴蝶豆

    金牌会员

    最后登录
    2018-6-15
    发表于 2017-1-4 18:07:23 | 显示全部楼层
    谢谢分享                                      
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6

    主题

    1032

    帖子

    7

    蝴蝶豆

    金牌会员

    最后登录
    2022-2-6
    发表于 2017-1-4 20:21:30 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

    该用户从未签到

    19

    主题

    1734

    帖子

    7

    蝴蝶豆

    论坛元老

    最后登录
    2021-5-10
    发表于 2017-1-4 23:11:26 | 显示全部楼层
    这个有些 木有看懂
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11

    主题

    460

    帖子

    0

    蝴蝶豆

    金牌会员

    最后登录
    2018-12-18
    发表于 2017-1-5 08:39:32 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    23

    主题

    611

    帖子

    0

    蝴蝶豆

    高级会员

    最后登录
    2018-4-11
    发表于 2017-1-5 08:59:55 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-5-12 15:33 , Processed in 1.199849 second(s), 43 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表