在实际使用 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 图形加速器简介的更多相关文章

  1. 【STM32H7教程】第55章 STM32H7的图形加速器DMA2D的基础知识和HAL库API

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第55章       STM32H7的图形加速器DMA2D的基 ...

  2. matlab学习笔记8 基本绘图命令-图形窗口简介

    一起来学matlab-matlab学习笔记8 基本绘图命令_1 图形窗口简介 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等 ...

  3. 第15.47节、PyQt显示部件:QGraphicsView图形视图和QGraphicsScene图形场景简介及应用案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer中的Graphics V ...

  4. 27-4-DMA2D图形加速器

    在实际使用 LTDC 控制器控制液晶屏时,使 LTDC 正常工作后,往配置好的显存地址写入要显示的像素数据, LTDC 就会把这些数据从显存搬运到液晶面板进行显示,而显示数据的容量非常大,所以我们希望 ...

  5. 第四十章、PyQt显示部件:QGraphicsView图形视图和QGraphicsScene图形场景简介及应用案例

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer中的Graphics V ...

  6. 第27章 LTDC/DMA2D—液晶显示

    本章参考资料:<STM32F76xxx参考手册2>.<STM32F7xx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>. 关于开发板 ...

  7. 第27章 LTDC/DMA2D—液晶显示—零死角玩转STM32-F429系列

    第27章     LTDC/DMA2D—液晶显示 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...

  8. SIMD数据并行(三)——图形处理单元(GPU)

    在计算机体系中,数据并行有两种实现路径:MIMD(Multiple Instruction Multiple Data,多指令流多数据流)和SIMD(Single Instruction Multip ...

  9. Quartz2D 编程指南(一)概览、图形上下文、路径、颜色与颜色空间

    概览 图形上下文 路径 颜色与颜色空间 变换 图案 阴影 渐变 透明层 Quartz 2D 中的数据管理 位图与图像遮罩 CoreGraphics 绘制 Layer 0.说明 本篇博客主要是对官方文档 ...

随机推荐

  1. 【docker】挂载web应用

    现在将webapps目录挂载在宿主机目录,方便运维 docker run -p 8090:8080 --name app -v /usr/app:/usr/local/tomcat/webapps d ...

  2. 简单易懂的Ubuntu生存战略:开启无线网卡的wifi热点,ap模式

    在ubuntu下如何把无线网卡设置成可供wifi设备上网的接入点 因为某些移动设备对wifi热点的要求有些苛刻,p2p模式的无线连接方式虽然易设置,但是实用性不高. 相对而言,创建一个虚拟无线路由器成 ...

  3. 使用mysql遇到的异常

    Can't find any matching row in the user table 原因 更改mysql.user表之后,没有使用flush privileges命令来更新权限. 解决方案 使 ...

  4. 理解WEB标准

    WEB标准不是某一个标准,而是一系列标准的集合.网页主要由三部分组成:结构(Structure).表现(Presentation)和行为 (Behavior).对应的标准也分三方面:结构化标准语言主要 ...

  5. JFinal 源码知识点

    1.JFinal中自带json工具类,没必要导入其他的转化包. 使用:setAttr("status","success"), renderJson() 会将所 ...

  6. python练习笔记——模拟双色球随机输出情况

    编写Python函数:完成一个双色球彩票的模拟生成过程, 其中前六个为蓝色球,数字范围1-33,不可重复.最后一个为红色球 1-16. 使用random完成,最后将7个数进行排列放到列表中 # 引入r ...

  7. 转:Web优化 及常用工具包

    Web优化: 减少http请求 避免404错误 在html页面header加入缓存标签 Gzip压缩网页 减少cookie体积 使用外部的js和css 消减js和css 压缩js 使用css spri ...

  8. if else和switch的效率

    switch和if-else相比,由于使用了Binary Tree算法,绝大部分情况下switch会快一点,除非是if-else的第一个条件就为true. 说实话  我也没有深入研究过这个问题的根源  ...

  9. Linux内核(1) - Kernel地图:Kconfig与Makefile

    Makefile不是Make Love 从前在学校,混了四年,没有学到任何东西,每天就是逃课,上网,玩游戏,睡觉.毕业的时候,人家跟我说Makefile我完全不知,但是一说Make Love我就来劲了 ...

  10. 【iOS开发-56】案例BUG:button的enabled、控件的userInteractionEnabled以及两种提示框UIAlert和UIActionSheet

    接上述案例找BUG:[iOS开发-51]案例学习:动画新写法.删除子视图.视图顺序.延迟方法.button多功能使用方法及icon图标和启动页设置 (1)BUG:答案满了就不能再点击optionbut ...