本文共 1547 字,大约阅读时间需要 5 分钟。
DMA2D技术说明
DMA2D是什么?
DMA2D(Direct Memory Access 2D)是一种高效的图像处理接口,主要用于LCD显示屏的图像数据传输和存储管理。它通过DMA(直接内存访问)技术,能够快速、低延迟地将数据从显存传输到显示屏,或者从前景层存储器复制数据到目标区域。
DMA2D的工作模式
DMA2D支持五种工作模式,分别用于不同场景的图像处理:
寄存器到存储器模式
- 主要用于清屏操作,即将显示屏刷新为单色效果。
- 该模式下,DMA2D将寄存器中的颜色值填充到存储器中。
存储器到存储器模式
- 用于从一个存储器复制数据到另一个存储器。
- 常见应用是将摄像头输出图像复制到LCD显存中。
存储器到存储器模式,带颜色格式转换
- 支持将RGB888格式的位图转换为RGB565格式,并显示到LCD上。
- 适用于需要颜色格式转换的显示场景。
存储器到存储器模式,带颜色格式转换和混合
- 不仅支持颜色格式转换,还能进行颜色混合。
- 可用于显示带透明度效果的图像。
存储器到存储器模式,带颜色格式转换和混合,前景色固定
- 类似模式4,但前景色颜色值固定。
- 适用于需要固定的前景色混合显示。
寄存器到存储器模式详解
在寄存器到存储器模式下,DMA2D主要用于清屏操作。以下是具体实现步骤:
设置DMA2D工作模式
配置颜色格式
- 设置输出颜色格式(OPFCCR)与LCD颜色格式一致,例如RGB565。
设置填充区参数
- 设置输出填充区首地址(OMAR)和行偏移(OOR)。
启动传输
具体应用示例
- 在正点原子中,LTDC_Fill函数用于填充矩形区域,支持频繁调用以提升性能。
存储器到存储器模式详解
存储器到存储器模式用于从前景层复制数据到目标区域,支持颜色填充和图像复制:
设置DMA2D工作模式
配置源和目标地址
- 设置前景层数据首地址(FGMAR)和输出存储器地址(OMAR)。
设置行偏移
设置颜色格式
启动传输
具体应用示例
- 在安富莱中,_DMA2D_Copy函数用于从前景层复制数据到目标区域,支持大图像绘制。
模式3:存储器到存储器模式,带颜色格式转换
这种模式支持颜色格式转换和混合,适用于复杂图像处理:
配置前景层和背景层数据地址
- 设置前景层(FGMAR)和背景层(BGMAR)数据地址。
设置混合参数
启动传输
具体应用示例
- _DMA2D_MixColorsBulk函数用于混合前景层和背景层数据,支持透明度设置。
模式4:存储器到存储器模式,带颜色格式转换和混合
这种模式支持前景层和背景层的颜色混合,适用于复杂的混合效果:
配置颜色格式
- 前景层和背景层采用ARGB8888格式,输出区采用RGB565格式。
设置混合参数
启动传输
具体应用示例
- _DMA2D_AlphaBlendingBulk函数用于混合两个位图,支持复杂图像显示。
模式5:存储器到存储器模式,带颜色格式转换和混合,前景色固定
这种模式与模式4类似,但前景色颜色值固定:
配置前景层颜色
配置颜色格式
- 前景层颜色格式为ARGB8888,背景层和输出区颜色格式可配置。
启动传输
具体应用示例
- _DMA2D_DrawAlphaBitmap函数用于显示带透明度的ARGB8888格式位图。
转载地址:http://crjdz.baihongyu.com/