HAL - DMA2D分析

cubemx设置
HAL - DMA2D分析_第1张图片
Transfer Mode:DMA有4种工作模式,分别是寄存器到存储器,存储器到存储器,像素格式转换模式,混合模式, 寄存器到存储器用于快速填充同一种颜色。存储器到存储器用于图片搬运等,像素格式转换,在存储器到存储器基础上额外进行格式转换,混合,在像素转换功能上增加混合功能。
color mode:目标颜色模式
outputoffset:指每行之后的间隔像素(用于窗口)。

混合分为前景层和后景层两个,参数一样
DMA2D Input Color Mode:输入颜色格式
DMA2D ALPHA MODE:透明的计算模式
Input Alpha:输入透明值
Input Offset:类似于output,但是针对的是背景层的串口传输
DMA2D ALPHA Inversion:正转换和逆转换
DMA2D Red and Blue swap:RGB 和 BGR模式

记得开中断。以TOUCHGFX为例子,其频繁的使用DMA2D,所以会根据情况选择最合适的初始化。所以这四种都推荐生成然后备份以供随时根据需要使用,当然一般的简单用法用好寄存器到寄存器就行了。

API说明

//初始化和去初始化,建立多参考下TOUCHGFX中配置,高级使用中,很少使用单一模式的。
HAL_StatusTypeDef HAL_DMA2D_Init(DMA2D_HandleTypeDef *hdma2d);
HAL_StatusTypeDef HAL_DMA2D_DeInit (DMA2D_HandleTypeDef *hdma2d);

HAL_StatusTypeDef HAL_DMA2D_Start(DMA2D_HandleTypeDef *hdma2d, uint32_t pdata, uint32_t DstAddress, uint32_t Width, uint32_t Height); //启动一次DMA2D阻塞传输,非混合模式
HAL_StatusTypeDef HAL_DMA2D_BlendingStart(DMA2D_HandleTypeDef *hdma2d, uint32_t SrcAddress1, uint32_t SrcAddress2, uint32_t DstAddress, uint32_t Width,  uint32_t Height); //启动一次DMA2D阻塞传输,仅混合模式
HAL_StatusTypeDef HAL_DMA2D_Start_IT(DMA2D_HandleTypeDef *hdma2d, uint32_t pdata, uint32_t DstAddress, uint32_t Width, uint32_t Height);
//启动一次DMA2D中断传输,非混合模式
HAL_StatusTypeDef HAL_DMA2D_BlendingStart_IT(DMA2D_HandleTypeDef *hdma2d, uint32_t SrcAddress1, uint32_t SrcAddress2, uint32_t DstAddress, uint32_t Width, uint32_t Height);//启动一次DMA2D中断传输,仅混合模式
HAL_StatusTypeDef HAL_DMA2D_Suspend(DMA2D_HandleTypeDef *hdma2d); //暂停
HAL_StatusTypeDef HAL_DMA2D_Resume(DMA2D_HandleTypeDef *hdma2d); //恢复
HAL_StatusTypeDef HAL_DMA2D_Abort(DMA2D_HandleTypeDef *hdma2d); //退出

后面还有一些但是没用过就不分析了。不如颜色表的设置和使用。毕竟现在W25Q256(QSPI)有32M,即使用ARGB放图片也足够了。颜色表这种就是RGB565转RGB这种用的。

你可能感兴趣的:(HAL库)