11 Chrom-Art
控制器 (DMA2D)
Accelerator™
本章适用于 STM32F42xxx 和 STM32F43xxx 系列。
简介
11.1 DMA2D
Chrom-Art Accelerator™ (DMA2D) 是专用于图像处理的专业 DMA。它可以执行下列操作:
∙用特定颜填充目标图像的一部分或全部
∙将源图像的一部分(或全部)复制到目标图像的一部分(或全部)中
∙通过像素格式转换将源图像的一部分(或全部)复制到目标图像的一部分(或全部)中
∙将像素格式不同的两个源图像部分和/或全部混合,再将结果复制到颜格式不同的部分或整个目标图像中。
在索引颜模式或直接颜模式下,支持所有经典颜编码方案,并支持每像素 4 位到最高
32 位。DMA2D 自身具有专门的 CLUT(颜查表)存储器。
的主要特性
11.2 DMA2D
DMA2D 的主要特性有:
∙采用单 AHB 主设备总线架构。
∙AHB 从设备编程接口支持 8/16/32 位访问(32 位的 CLUT 访问除外)。
∙用户可编程工作区大小
∙用户可编程源区域和目标区域的偏移
∙用户可编程整个存储空间的源地址和目标地址
∙最多支持 2 个源的混合操作
∙Alpha 值可修改(源值、固定值或调制的值)
∙用户可编程源颜格式和目标的颜格式
∙采用间接或直接颜编码时,支持多达 11 种颜格式,且支持每像素 4 位到最高 32 位
∙间接颜模式下使用 2 个内部存储器存储 CLUT
∙通过 CPU 自动加载 CLUT 或对 CLUT 进行编程
∙用户可编程 CLUT 大小
∙使用内部定时器控制 AHB 带宽
∙支持 4 种工作模式:寄存器到存储器、存储器到存储器、存储器到存储器且支持像素格 式转换和存储器到存储器且支持像素格式转换和混合
∙可使用固定颜进行区域填充
∙可从一个区域复制到另一个区域
∙在源图像和目标图像之间进行复制时进行像素格式转换
∙支持从颜格式不同的两幅源图像复制并混合
∙可中止并挂起 DMA2D 操作
∙支持在传输用户可编程的目标行时生成水印中断
∙支持发生总线错误或访问冲突时生成中断
∙支持处理完成时生成中断
336/1710文档 ID 018909 第 7 版
功能说明
11.3 DMA2D
11.3.1 概述
DMA2D 控制器执行直接存储器传输。作为一个 AHB 主设备,它可以控制 AHB 总线矩阵来
启动 AHB 事务。
DMA2D 可在以下四种模式下工作:
∙寄存器到存储器
∙存储器到存储器
∙存储器到存储器并执行像素格式转换
∙存储器到存储器并执行像素格式转换和混合
AHB 从设备端口用于编程 DMA2D 控制器。
DMA2D 的框图如图 40:DMA2D 框图所示。
文档 ID 018909 第 7 版337/1710
11.3.2 DMA2D
控制
通过 DMA2D 控制寄存器 (DMA2D_CR) 配置 DMA2D 控制器,允许选择:
用户应用可以执行下列操作:
∙选择工作模式
∙使能/禁止 DMA2D 中断
∙启动/挂起/中止进行中的数据传输
前景层 FIFO 和背景层 FIFO
11.3.3 DMA2D
DMA2D 前景层 (FG) FG FIFO 和背景层 (BG) FIFO 获取要复制和/或处理的输入数据。
这些 FIFO 根据相应像素格式转换器 (PFC) 中定义的颜格式获取像素。
通过如下一组寄存器对它们进行编程:
∙DMA2D 前景层存储器地址寄存器 (DMA2D_FGMAR)
∙DMA2D 前景层偏移寄存器 (DMA2D_FGOR)
∙DMA2D 背景层存储器地址寄存器 (DMA2D_BGMAR)
∙DMA2D 背景层偏移寄存器 (DMA2D_BGBOR)
∙DMA2D 行数寄存器(行数和每行像素数)(DMA2D_NLR)
DMA2D 在寄存器到存储器模式下工作时,不激活任何 FIFO。
DMA2D 在存储器到存储器模式下工作时(无像素格式转换和混合操作),仅激活 FG FIFO,
并将其用作缓冲区。
DMA2D 在存储器到存储器模式下工作时并支持像素格式转换时(无混合操作),不会激活
BG FIFO。
前景层和背景层像素格式转换器 (PFC)
11.3.4 DMA2D
DMA2D 前景层和背景层像素格式转换器 (PFC) 执行像素格式转换,以生成每像素 32 位的
值。PFC 还能够修改 alpha 通道。
转换器在第一阶段转换颜格式。前景层像素和背景层像素的原始颜格式分别通过
DMA2D_FGPFCCR 和 DMA2D_BGPFCCR 的 CM[3:0] 位来配置。
表 52:输入时支持的颜模式给出了支持的输入格式。
表 52. 输入时支持的颜模式
CM[3:0]颜模式
0000ARGB8888
0001RGB888
0010RGB565
0011ARGB1555
0100ARGB4444
0101L8
0110AL44
0111AL88
338/1710文档 ID 018909 第 7 版
文档 ID 018909 第 7 版339/1710
颜格式的编码方式如下: ∙Alpha 值字段:透明
0xFF 值对应不透明像素,0x00 对应透明像素。∙R 字段代表红∙G 字段代表绿∙ B 字段代表蓝∙
L 字段:亮度
该字段是 CLUT 的索引,用于检索三个/四个 RGB/ARGB 分量。
如果原始格式为直接颜模式,则通过将 MSB 复制到 LSB 扩展为每通道 8 位。这可以确保 转换具有良好的线性。
如果原始格式不包括 alpha 通道,则会自动将 alpha 值设为 0xFF (不透明)。
如果原始格式为间接颜模式,则需要使用 CLUT ,并且每个像素格式转换器与一个 256 个 32 位 条目的 CLUT 相关联。
对于特定的 alpha 模式 A4 和 A8,既不存储颜信息,也不编制索引。用于生成图像的颜 是固定的,并且在 DMA2D_FGCOLR 寄存器中定义前景层像素的颜,在 DMA2D_BGCOLR 寄存器中定义背景层像素的颜。
系统存储器中的字段顺序如表 53:存储器中的数据顺序所示。
1000L41001A81010
A4
表 52. 输入时支持的颜模式
CM[3:0]
颜模式表 53. 存储器中的数据顺序
颜模式@ + 3
@ + 2
@ + 1
@ + 0
ARGB8888
A 0[7:0]R 0[7:0]G 0[7:0]
B 0[7:0]RGB888
B 1[7:0]R 0[7:0]G 0[7:0]B 0[7:0]G 2[7:0]B 2[7:0]R 1[7:0]G 1[7:0]R 3[7:0]G 3[7:0]B 3[7:0]R 2[7:0]RGB
565R 1[4:0]G 1[5:3]G 1[2:0]B 1[4:0]R 0[4:0]G 0[5:3]G 0[2:0]B 0[4:0]ARGB1555A 1[0]R 1[4:0]G 1[4:3]G 1[2:0]B 1[4:0]A 0[0]R 0[4:0]G 0[4:3]G 0[2:0]B 0[4:0]ARGB4444
A 1[3:0]R 1[3:0]
G 1[3:0]B 1[3:0]
A 0[3:0]R 0[3:0]
G 0[3:0]B 0[3:0]
中文翻译英文转换器L8L 3[7:0]L 2[7:0]L 1[7:0]L 0[7:0]AL44A 3[3:0]L 3[3:0]A 2[3:0]L 2[3:0]
A 1[3:0]L 1[3:0]A 0[3:0]L 0[3:0]
AL88A 1[7:0]L 1[7:0]A 0[7:0]L 0[7:0]L4L 7[3:0]L 6[3:0]L 5[3:0]L 4[3:0]L 3[3:0]L 2[3:0]L 1[3:0]L 0[3:0]A8A 3[7:0]A 2[7:0]A 1[7:0]A 0[7:0]A4
A 7[3:0]A 6[3:0]
A 5[3:0]A 4[3:0]
A 3[3:0]A 2[3:0]
A 1[3:0]A 0[3:0]
340/1710文档 ID 018909 第 7 版
通过 ARGB8888 模式支持按 32 位对齐 24 位 RGB888。
生成 32 位值后,即可根据 DMA2D_FGPFCCR/DMA2D_BGPFCCR 寄存器的 AM[1:0] 字段 修改 alpha 通道,如表 54:Alpha 模式配置所示。Alpha 通道可以:∙保持不变(不做修改),
∙替换为 DMA2D_FGPFCCR/DMA2D_BGPFCCR 的 ALPHA[7:0] 值
∙
或替换为原始 alpha 值与 DMA2D_FGPFCCR/DMA2D_BGPFCCR 的 ALPHA [7:0] 值 除以 255 所得商的乘积。
11.3.5 DMA2D 前景层 FIFO 和背景层 CLUT 接口
CLUT 接口可管理对 CLUT 存储器的访问以及 CLUT 的自动加载。支持如下三种访问:∙PFC 在像素
格式转换期间读取 CLUT
∙CPU 对 CLUT 进行数据的读取或写入时,通过 AHB 从设备端口访问 CLUT ∙执行自动加载 CLUT 时,通过 AHB 主设备端口进行 CLUT 写入可通过两种不同方法执行 CLUT 存储器加载:
∙
自动加载
加载 CLUT 时应遵守以下顺序:
a) 将 CLUT 地址编程到 DMA2D_FGCMAR 寄存器(前景层 CLUT )或
DMA2D_BGCMAR 寄存器(背景层 CLUT )b) 将 CLUT 大小编程到 DMA2D_FGPFCCR 寄存器(前景层 CLUT )或
MA2D_BGPFCCR 寄存器(背景层 CLUT )的 S[7:0] 字段。c)
将 MA2D_FGPFCCR 寄存器(前景层 CLUT )或 DMA2D_BGPFCCR 寄存器(背 景层 CLUT )的 START 位置 1 以启动传输。自动加载过程期间,不可通过 CPU 访问 CLUT 。如果出现冲突,若 DMA2D_CR 中 CAEIE 被置 1,则发生 CLUT 访问错 误中断。
∙手动加载
应用程序必须通过 DMA2D AHB 从设备端口手动编程本地 CLUT 存储器映射到的 CLUT 。前景层 CLUT 从偏移地址 0x0400 开始,背景层 CLUT 从偏移地址0x0800 开始。
CLUT 格式可以是 24 位或 32 位。通过 DMA2D_FGPFCCR 寄存器(前景层 CLUT )或 DMA2D_BGPFCCR 寄存器(背景层 CLUT )的 CCM 位配置格式,如表 55:支持的 CLUT 颜模式所示。
表 54. Alpha 模式配置
AM[1:0]
Alpha 模式00不做修改
01替换为 DMA2D_xxPFCCR 中的值
10替换为原始值与 DMA2D_xxPFCCR 中的值/255 所得商的乘积
11
保留
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论