[技术相关]

SWM341 DMA2D模块介绍

[复制链接]
233|7
手机看帖
扫描二维码
随时随地手机跟帖
华芯微特FAE|  楼主 | 2023-6-2 13:53 | 显示全部楼层 |阅读模式
1. DMA2D模块基础知识
DMA2D是专用于图像处理的专业DMA。特别是刷单色屏,刷图片,刷Alpha(透明)混合效果全靠它,而且可以大大降低CPU利用率。
DMA2D主要实现了两个功能,一个是DMA数据传输功能,另一个是2D图形加速功能。
◆ DMA数据传输
主要是两种方式,一个是寄存器到存储器,另一个是存储器到存储器。通DMA可以大大降低CPU的利用率。
◆ 2D图形加速功能
支持硬件的颜色格式转换和Alpha混合效果。
DMA2D可在以下四种模式下工作:
· 寄存器到存储器
· 存储器到存储器
· 存储器到存储器并执行像素格式转换
· 存储器到存储器并执行像素格式转换和混合
DMA2D模块结构框图如下所示:
图片1.png
2. DMA2D前景层FIFO和背景层FIFO
DMA2D前景层FIFO和背景层FIFO获取要复制和/或处理的输入数据。
这些FIFO根据相应像素格式转换器PFC中定义的颜色格式获取像素。
通过如下一组寄存器对它们进行编程:
· DMA2D前景层存储器地址寄存器(FGMAR)
· DMA2D前景层偏移寄存器(FGOR)
· DMA2D背景层存储器地址寄存器 (BGMAR)
· DMA2D背景层偏移寄存器 (BGOR)
· DMA2D行数寄存器(行数和每行像素数)(NLR)
DMA2D在寄存器到存储器模式下工作时,不激活任何FIFO。
DMA2D在存储器到存储器模式下工作时(无像素格式转换和混合操作),仅激活FG FIFO,并将其用作缓冲区。
DMA2D在存储器到存储器模式下工作时并支持像素格式转换时(无混合操作),不会激活BG FIFO。
3. DMA2D 前景层和背景层像素格式转换器 (PFC)
DMA2D前景层和背景层像素格式转换器 (PFC)执行像素格式转换,以生成每像素32位的值。PFC还能够修改alpha通道。
转换器在第一阶段转换颜色格式。前景层像素和背景层像素的原始颜色格式分别通过 FGPFCCR和BGPFCCR的CFMT [3:0] 位来配置。
颜色格式的编码方式如下:
· Alpha 值字段:透明
0xFF 值对应不透明像素,0x00 对应透明像素。
· R 字段代表红色
· G 字段代表绿色
· B 字段代表蓝色
如果原始格式不包括alpha通道,则会自动将alpha值设为0xFF(不透明)。
通过ARGB8888模式支持按32位对齐24位RGB888。
生成32位值后,即可根据FGPFCCR/ BGPFCCR寄存器的AMODE [1:0]字段修改alpha 通道。
Alpha通道可以:
· 保持不变(不做修改)
· 替换为FGPFCCR/BGPFCCR的ALPHA[7:0]值
· 替换为原始alpha值与FGPFCCR/BGPFCCR的ALPHA [7:0]值的乘积除以255所得商。
4. DMA2D混合器
DMA2D混合器成对混合源像素以计算结果像素。
混合将按以下公式执行:
图片2.png
混合器不需要任何配置寄存器。是否使用混合器取决于CR寄存器的MODE[1:0]字段中定义的DMA2D工作模式。
5. DMA2D输出PFC
输出PFC将像素格式从32位转换为指定的输出格式,输出格式在DMA2D输出像素格式转换器配置寄存器 (OPFCCR)的CFMT [2:0]字段中定义。
6.DMA2D输出FIFO
输出FIFO根据输出PFC中定义的颜色格式对像素进行编程。
通过如下一组寄存器定义目标区域:
· DMA2D输出存储器地址寄存器 (OMAR)
· DMA2D输出偏移寄存器 (OOR)
· DMA2D行数寄存器(行数和每行像素数)(NLR)
如果DMA2D在寄存器到存储器模式下工作,则配置的输出矩形将以DMA2D输出颜色寄存器 (OCOLOR)中指定的颜色填充。
6. DMA2D配置
DMA2D可在以下四种模式下工作,通过CR寄存器的MODE[1:0]位选择工作模式:
· 寄存器到存储器
· 存储器到存储器
· 存储器到存储器并执行PFC
· 存储器到存储器并执行PFC和混合
寄存器到存储器
寄存器到存储器模式用于以预定义颜色填充用户自定义区域。
颜色格式在OPFCCR中设置。
DMA2D不从任何源获取数据。它只将OCOLOR寄存器中定义的颜色写入通过OMAR 寻址以及NLR和OOR定义的区域。
存储器到存储器
在存储器到存储器模式下,DMA2D不执行任何图形数据转换。前景层输入FIFO充当缓冲区,数据从FGMAR中定义的源存储单元传输到OMAR寻址的目标存储单元。
FGPFCCR寄存器的CFMT [3:0]位中编程的颜色模式决定输入和输出的每像素位数。
对于要传输的区域大小,源区域大小由NLR和FGOR寄存器定义,目标区域大小则由 NLR和OOR寄存器定义。
存储器到存储器并执行PFC
此模式下,DMA2D对源数据执行像素格式转换并将结果存储在目标存储单元。
对于要传输的区域大小,源区域大小由NLR和FGOR寄存器定义,目标区域大小则由 NLR和OOR寄存器定义。
FGMAR寄存器定义的位置获取数据,并由前景层PFC进行处理。原始像素格式通过 FGPFCCR寄存器配置。
在颜色转换执行期间,可根据FGPFCCR寄存器中编程的值添加或更改alpha值。如果原始图像没有alpha通道,则会自动添加一个默认的alpha值0xFF以获得完全不透明的像素。可根据FGPFCCR寄存器的AMODE [1:0]位修改alpha值:
· 保持不变。
· 替换为FGPFCCR寄存器的ALPHA[7:0]值中定义的值。
· 替换为原始值与FGPFCCR寄存器的ALPHA[7:0]值的乘积除以255所得商。
结果得到的32位数据由OUT PFC编码成OPFCCR寄存器的CFMT [2:0]字段所指定的格式。数据经处理后,将写入OMAR寻址的目标存储单元。
存储器到存储器并执行PFC和混合
此模式下,将在前景层FIFO和背景层FIFO(分别在FGMAR和BGMAR中定义)获取 两个源图像。
必须按存储器到存储器模式中所述配置两个像素格式转换器。由于这两个像素格式转换器各自独立,因此其配置可以不同。 在每个像素都通过相应的PFC转换为32位后,将根据上述公式进行混合:输出PFC将根据指定的输出格式对得到的32位像素值进行编码,并且编码数据将写入OMAR寻址的目标存储单元。

使用特权

评论回复

相关帖子

qcliu| | 2023-7-1 15:42 | 显示全部楼层
DMA2D是一种专门用来处理图像的DMA,和DMA类似,但也有很多的差异性

使用特权

评论回复
drer| | 2023-7-1 15:59 | 显示全部楼层
DMA2D主要是依据前景层FG和背景层BG,通过FIFO来从这两个层中的某一个或者两个来获得数据,并对数据进行处理

使用特权

评论回复
coshi| | 2023-7-1 16:40 | 显示全部楼层
DMA2D 在存储器到存储器模式下工作时(无像素格式转换和混合操作),仅激活 FG FIFO,并将其用作缓冲区

使用特权

评论回复
kxsi| | 2023-7-1 16:54 | 显示全部楼层
DMA2D 在存储器到存储器模式下工作时并支持像素格式转换时(有混合操作),才会激活BG FIFO

使用特权

评论回复
wiba| | 2023-7-1 17:13 | 显示全部楼层
MA2D还有颜色查找表CLUT可以利用,CLUT的数据是根据自己的想法和思路进行构造和生成的

使用特权

评论回复
tpgf| | 2023-7-1 17:34 | 显示全部楼层
DMA2D 不从任何源获取数据。它只将 DMA2D_OCOLR 寄存器中定义的颜色写入通过

DMA2D_OMAR 寻址以及 DMA2D_NLR 和 DMA2D_OOR 定义的区域

使用特权

评论回复
chenqianqian| | 2023-7-3 08:22 | 显示全部楼层
对于MCU来说DMA实用性太强了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:广东华芯微特集成电路有限公司
简介:华芯微特是一家由留美归国资深技术团队创立的中国芯片设计公司,是国家高新技术企业。2014年进军MCU产业,专注于32位MCU研发设计,并针对细分市场提供参考解决方案。

44

主题

337

帖子

4

粉丝