在stm32f429中有一个Chrom-Art Accelerator? controller(DMA2D),这个控制器是一款专门用于图像处理的DMA(也可以和普通的DMA一样用于数据传输),能够用于2D图形加速(主要针对LCD屏幕)。
一、DMA2D主要能够进行的图形加速加速
- 区域填充、图像复制。用特定的颜色填充目标图像的一部分或整体,将源图像的一部分或全部复制到目标图像的一部分或全部。
- 通过像素格式转换,将源图像的一部分或全部复制到目标图像的一部分或全部
- 混合一个部分和/或两个完整的源图像与不同的像素格式,并复制结果为一个部分或整体的目标图像与不同的像素格式。
以上描述的很抽象,其实可以简化理解,就是:能够支持2个图层的输入(前景、背景),能够分别对两个图层进行颜色格式转换,能够单独/混合处理两个图层并输出处理后的颜色数据。
二、DMA2D的工作模式
DMA2D有5个工作模式:
- 模式一,寄存器到存储器模式。可以用于清屏,即将LCD屏幕清除成单色。
- 模式二,存储器到存储器模式。能够将一块数据从一个存储器复制到另一个存储器。如将摄像头的输出数据复制到LCD显存。
- 模式三,带颜色转换的存储器到存储器模式。该模式较模式二多了rgb格式转换功能,能够在过程中对颜色格式进行转换(如RGB888转RGB565)。
- 模式四,带颜色转换及混合的存储器到存储器模式。该模式较模式三多了混合功能,能够进行颜色数据混合。
- 模式五,带颜色转换及固定前景色混合的存储器到存储器模式。该模式较模式四要求固定前景色。
三、HAL库中DMA2D外设相关的结构体、函数、宏
在HAL库中堆DMA2D外设相关寄存器抽象成了相关的结构体类型:DMA2D_TypeDef。然后通过宏定义将外设基地址与之关联;DMA2D_InitTypeDef类型主要用于对DMA2D进行基础参数的配置;DMA2D_LayerCfgTypeDef为抽象出的图层结构。DMA2D_HandleTypeDef将前三个类型进行了进一步的封装,作为库中操作该外设的句柄类型;DMA2D_LayerCfgTypeDef类型用于设置前景色或者背景色;XferCpltCallback和XferErrorCallback这两个回调接口类型分别为传输完成中断、传输错误中断。常用到的相关函数包括:HAL_DMA2D_Init、HAL_DMA2D_ConfigLayer、HAL_DMA2D_Start_IT、HAL_DMA2D_BlendingStart_IT、HAL_DMA2D_RegisterCallback、HAL_DMA2D_UnRegisterCallback、HAL_DMA2D_MspInit(弱定义)。USE_HAL_DMA2D_REGISTER_CALLBACKS是一个重要的相关宏。
四、DMA2D实际使用中的常见概念
1、行偏移,意思是一行结束到下一行开始的距离,单位为像素个数。
|