DMA2D 图形加速器简介
在实际使用 LTDC 控制器控制液晶屏时,使 LTDC 正常工作后,往配置好的显存地址
写入要显示的像素数据, LTDC 就会把这些数据从显存搬运到液晶面板进行显示,而显示
数据的容量非常大,所以我们希望能用 DMA 来操作,针对这个需求, STM32 专门定制了
DMA2D 外设,它可用于快速绘制矩形、直线、分层数据混合、数据复制以及进行图像数
据格式转换,可以把它理解为图形专用的 DMA。
DMA2D 结构框图剖析
图 27-13 是 DMA2D 的结构框图,它与前面 LTDC 结构里的图像处理单元很类似,主
要为分层 FIFO、 PFC 及彩色混合器。

1. FG FIFO 与 BG FIFO
FG FIFO(Foreground FIFO)与 BG FIFO(Backgroun FIFO)是两个 64x32 位大小的缓冲区,
它们用于缓存从 AHB 总线获取的像素数据,分别专用于缓冲前景层和背景层的数据源。
AHB 总线的数据源一般是 SDRAM,也就是说在 LTDC 外设中配置的前景层及背景层
数据源地址一般指向 SDRAM 的存储空间,使用 SDRAM 的部分空间作为显存。
2. FG PFC 与 BG PFC
FG PFC(FG Pixel Format Convertor)与 BG PFC(BG Pixel Format Convertor)是两个像素格
式转换器,分别用于前景层和背景层的像素格式转换,不管从 FIFO 的数据源格式如何,
都把它转化成字的格式(即 32 位), ARGB8888。
图中的“ɑ”表示 Alpha,即透明度,经过 PFC,透明度会被扩展成 8 位的格式。
图中的“CLUT”表示颜色查找表(Color Lookup Table),颜色查找表是一种间接的颜色
表示方式,它使用一个 256x32 位的空间缓存 256 种颜色,颜色的格式是 ARGB8888 或
RGB888。见图 27-14,利用颜色查找表,实际的图像只使用这 256 种颜色,而图像的每个
像素使用 8 位的数据来表示,该数据并不是直接的 RGB 颜色数据,而是指向颜色查找表的
地址偏移,即表示这个像素点应该显示颜色查找表中的哪一种颜色。在图像大小不变的情
况下,利用颜色查找表可以扩展颜色显示的能力,其特点是用 8 位的数据表示了一个 24 或
32 位的颜色,但整个图像颜色的种类局限于颜色表中的 256 种。 DMA2D 的颜色查找表可
以由 CPU 自动加载或编程手动加载。

3. 混合器
FIFO 中的数据源经过 PFC 像素格式转换器后,前景层和背景层的图像都输入到混合
器中运算,运算公式见图 27-15。

4. OUT PFC
OUT PFC 是输出像素格式转换器,它把混合器转换得到的图像转换成目标格式,如
ARGB8888、 RGB888、 RGB565、 ARGB1555 或 ARGB4444,具体的格式可根据需要在输
出 PFC 控制寄存器 DMA2D_OPFCCR 中选择。
STM32F429 芯片使用 LTDC、 DMA2D 及 RAM 存储器,构成了一个完整的液晶控制
器。 LTDC 负责不断刷新液晶屏, DMA2D 用于图像数据搬运、混合及格式转换, RAM 存
储器作为显存。其中显存可以使用 STM32 芯片内部的 SRAM 或外扩 SDRAM/SRAM,只
要容量足够大即可(至少要能存储一帧图像数据)。





DMA2D结构体
配置完这些结构体成员,调用库函数DMA2D_Init即可把这些参数写入
到DMA2D的控制寄存器中,然后再调用DMA2D_StartTransfer函数开启数据传输及转换。
DMA2D 图形加速器简介的更多相关文章
- 【STM32H7教程】第55章 STM32H7的图形加速器DMA2D的基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第55章 STM32H7的图形加速器DMA2D的基 ...
- matlab学习笔记8 基本绘图命令-图形窗口简介
一起来学matlab-matlab学习笔记8 基本绘图命令_1 图形窗口简介 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等 ...
- 第15.47节、PyQt显示部件:QGraphicsView图形视图和QGraphicsScene图形场景简介及应用案例
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer中的Graphics V ...
- 27-4-DMA2D图形加速器
在实际使用 LTDC 控制器控制液晶屏时,使 LTDC 正常工作后,往配置好的显存地址写入要显示的像素数据, LTDC 就会把这些数据从显存搬运到液晶面板进行显示,而显示数据的容量非常大,所以我们希望 ...
- 第四十章、PyQt显示部件:QGraphicsView图形视图和QGraphicsScene图形场景简介及应用案例
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer中的Graphics V ...
- 第27章 LTDC/DMA2D—液晶显示
本章参考资料:<STM32F76xxx参考手册2>.<STM32F7xx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>. 关于开发板 ...
- 第27章 LTDC/DMA2D—液晶显示—零死角玩转STM32-F429系列
第27章 LTDC/DMA2D—液晶显示 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...
- SIMD数据并行(三)——图形处理单元(GPU)
在计算机体系中,数据并行有两种实现路径:MIMD(Multiple Instruction Multiple Data,多指令流多数据流)和SIMD(Single Instruction Multip ...
- Quartz2D 编程指南(一)概览、图形上下文、路径、颜色与颜色空间
概览 图形上下文 路径 颜色与颜色空间 变换 图案 阴影 渐变 透明层 Quartz 2D 中的数据管理 位图与图像遮罩 CoreGraphics 绘制 Layer 0.说明 本篇博客主要是对官方文档 ...
随机推荐
- C语言第一个例子hello world
1.用文本编辑器编辑代码如下,然后保存为hello.c文件 #include <stdio.h> int main(void){ printf("hello world" ...
- C#:定义窗口快捷键
事情的关键是要设置Form的KeyPreview属性,然后再在KeyDown事件中检查按键. public class TEST : Form { public TEST() { Initialize ...
- C#编写的 8种初级+高级排序方法(转)
摘自:http://blog.csdn.net/mevin/article/details/6714520 程序代码: view plaincopy to clipboard using System ...
- MFC中创建多线程
1. 列举几种进程的同步机制,并比较其优缺点. 原子操作 信号量机制 自旋锁 管程,会合,分布式系统 2. 进程之间通信的途径 共享存储系统 消息传递系统 ...
- web实现QQ第三方登录 开放平台-web实现QQ第三方登录
应用场景 web应用通过QQ登录授权实现第三方登录. 操作步骤 1 注册成为QQ互联平台开发者,http://connect.qq.com/ 2 准备一个可访问的域名, ...
- 【ERROR】bash: vim: command not found的解决办法
今天在学习鸟哥的菜的时候,发现自己linux不可以启用vim命令,错误为:bash: vim: command not found. 机器环境:VMWare8+RED HAT Enterprise5 ...
- TransactionScope事务处理方法介绍及.NET Core中的注意事项 SQL Server数据库漏洞评估了解一下 预热ASP.NET MVC 的VIEW [AUTOMAPPER]反射自动注册AUTOMAPPER PROFILE
TransactionScope事务处理方法介绍及.NET Core中的注意事项 作者:依乐祝 原文链接:https://www.cnblogs.com/yilezhu/p/10170712.ht ...
- 工作总结 ModelState.AddModelError("ShiYiObject", "对象不能为空!"); 小知识
// // 摘要: // 获取包含模型状态和模型绑定验证状态的模型状态字典对象. // // 返回结果: // 模型状态字典. public ModelStateDictionary ModelSta ...
- Python练习笔记——对输入的数字进行加和
请您输入数字,每个数字采用回车结束,当您输入型号*时,则结束数字输入,输出所有数字的总和 def num_sum(): i = 0 while True: get_num = input(" ...
- Ubuntu 10.04 安装Qt4.8.1 源码后字体模糊的问题
Ubuntu 10.04 安装QT4.8.1 源码后字体模糊的问题. 附加解决 QT SDK 4.8.1 链接失败的问题 Ubuntu 10.04 编译QT源码后,编译程序,运行后IPA字体无法正常显 ...