STM32单片机芯片与内部106 图形加速器 DMA2D 基础知识 HAL API

目录

一、DMA2D基础

二、DMA2D硬件框图

三、工作模式

1、寄存器到存储器模式

2、存储器到存储器模式

3、存储器到存储器模式, 带颜色格式转换

4、存储器到存储器模式, 带颜色格式转换和混合

5、存储器到存储器模式, 带颜色格式转换和混合,前景色是固定的

四、颜色配置

1、前景层和背景层的输入以及颜色格式转换

2、DMA2D 输出颜色格式

五、DMA2D配置


        DMA2D 是专门用于 LCD 加速的,特别是刷单色屏,刷图片,刷 Alpah(透明) 混合效果全靠它,而且可以大大降低 CPU 利用率。

        特别注意,大家只需对 HAL 库提供的 DMA2D 操作 API 有个了解即可,实际工程中,并不使用这些API, 我们需要使用更加高效的寄存器直接操作, 在下一章节会为大家说明。

一、DMA2D基础

        DMA2D 主要实现了两个功能,一个是 DMA 数据传输功能,另一个是 2D 图形加速功能。

  • DMA 数据传输

        主要是两种方式, 一个是寄存器到存储器,另一个是存储器到存储器。 通过 DMA 可以大大降低 CPU的利用率。

  • 2D 图形加速功能

        支持硬件的颜色格式转换和 Alpha 混合效果。

二、DMA2D硬件框图

三、工作模式

1、寄存器到存储器模式

        这个模式主要用于清屏, 也即是将显示屏清为单色效果。

2、存储器到存储器模式

        这个模式用于从一个存储器复制一块数据到另一个存储器,比如将摄像头 OV7670 的输出图像复制到LCD 显存就可以采用这种方式。

3、存储器到存储器模式, 带颜色格式转换

        这个模式比模式 2 多了一个颜色格式转换,比如我们要显示一幅 RGB888 颜色格式的位图到 RGB565颜色格式的显示屏, 就需要用到这个模式, 只需输入端配置为 RGB888, 输出端配置 RGB565 即可。位图颜色格式转换后会显示到显示屏上。

4、存储器到存储器模式, 带颜色格式转换和混合

        这个模式比模式 3 多了一个混合操作, 通过混合,可以将两种效果进行混合显示。

5、存储器到存储器模式, 带颜色格式转换和混合,前景色是固定的

        同模式 4, 只是前景色的颜色值是固定的。

四、颜色配置

1、前景层和背景层的输入以及颜色格式转换

        前景层和背景层是指的用户绘制图形时的前景色和背景色,比如我们显示汉字, 字体会有一个颜色,也就是前景色, 还有一个背景色。 又比如我们绘制两幅图片,想将两幅图片混合,那就可以将一幅图片作为前景层,另一个幅图片作为背景层。

        DMA2D 支持的输入颜色格式如下, 前景层和背景层一样:

前 8 种颜色格式在第 40 章的第 2 小节开头有介绍,这里把后3种做个说明:

        L4 (4-bit luminance or CLUT):4 位颜色格式, 实际上仅仅是 4 位索引值,范围 0–15,而每个索引值的具体颜色值在查色表 CLUT 里面存储。

        A4 和 A8:A4 和 A8 用于特定的 Alpha 模式,既不存储颜色信息,也没有索引值。

2、DMA2D 输出颜色格式

        DMA2D 支持的输出颜色格式如下:

五、DMA2D配置

        其中模式可以选择多种,颜色也可以选择输入与输出。

static void LCDF4_InitDMA2D(void)
{
	/* 使能DMA2D时钟 */
	__HAL_RCC_DMA2D_CLK_ENABLE();   
	
	/* 配置默认模式 */ 
	hdma2d.Init.Mode         = DMA2D_R2M;
	hdma2d.Init.ColorMode    = DMA2D_INPUT_RGB565;
	hdma2d.Init.OutputOffset = 0x0;     

	hdma2d.Instance          = DMA2D; 

	if (HAL_DMA2D_Init(&hdma2d) != HAL_OK)
	{
		Error_Handler(__FILE__, __LINE__);
	}
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌夏微秋

希望各位多多支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值