当前位置: 首页 > news >正文

【LTDC】DMA2D —— 嵌入式系统的 GPU

前言

ST 公司设计了一个专门用于图像处理的 DMA:DMA2D,可以之际通过 DMA2D 搬运或填充图像,而不经过 CPU,极大减轻了 CPU 的负担。为了学习 DMA2D,我也专门写了这篇文章,现在就让我们来看看吧!

DMA2D

工作模式

DMA2D 拥有四种工作模式,分别是:

  1. 寄存器到存储器
  2. 存储器到存储器
  3. 存储器到存储器并执行 PFC
  4. 存储器到存储器并执行 PFC 混合

由于我现在只用到了前两个,所以就先只学习前两个。

寄存器到存储器

寄存器到存储器模式,用于以预定义颜色填充用户自定义区域,也就是可以实现快速的单色填充显示,例如清屏操作。

存储器到存储器

此模式下,DMA2D 不执行任何图形数据转换。前景层输入 FIFO 充当缓冲区,数据从 DMA2D 中定义的源存储单元传输到 DMA2D 寻址的目标存储单元,可以用于快速图像填充。

层缓冲开窗

显示层开窗: 窗口显示区域的显存的首地址由 DMA2D_OMAR 寄存器指定,窗口的宽度和高度由 DMA2D_NRL 寄存器的 PL 和NL 指定,行偏移由 DMA2D_OOR 寄存器指定,通过这三个寄存器的配置,就可以确定窗口的显示位置和大小。
前景层开窗: 和上面的显示层开窗类似,不过 DMA2D_OMAR 寄存器变为了 DMA2D_FGMAR 寄存器;DMA2D_OOR 寄存器变为了 DMA2D_FGOR 寄存器;DMA2D_NRL 寄存器两个层共用。配置好就可以完成对前景层的开窗。

寄存器到存储器模式: DMA2D 可以将 DMA2D_OCOLR 指定的颜色,自动填充到开窗区域,完成单色填充。
存储器到存储器模式: 需要完成前景层显示层的开窗,完成配置后,图像数据从前景层拷贝到显示层(仅限窗口范围内),从而显示到 LCD 上面。

image

寄存器

由于 HAL 库的层层封装和各种安全检测,会使得 HAL 库的 DMA2D 的函数调用后速度会减慢,所谓唯快不破,所以 DMA2D 的寄存器操作是必不可少的。

DMA2D 控制寄存器 DMA2D_CR

image

  1. MODE[1:0]: 表示 DMA2D 的工作模式,00:存储器到存储器模式;01:存储器到存储器模式并执行PFC;10:存储器到存储器并执行混合;01:寄存器到存储器模式。
  2. START: 控制 DMA2D 的启动,1:启动;0:停止。

DMA2D 输出 PFC 控制寄存器 DMA2D_OPFCCR

image

CM[2:0]: 设置寄存器到存储器模式下的颜色格式,000:ARGB8888;001:RGB888;011:ARGB1555;100:ARGB1444。


前景层 PFC 控制寄存器 DMA2D_FGPFCRC

image

只需关心最低 4位。
CM[3:0]: 用于设置存储器到存储器模式下的颜色格式,0000:ARGB8888;0001:RGB888;0010: RGB565;0011:ARGB1555;0100:ARGB4444;0101:L8;0110:AL44;0111:AL88;1000:L4;1001:A8;1010:A4。


DMA2D 输出偏移寄存器 DMA2D_OOR

image

LO[13:0]: 设置输出行偏移,作用于显示层,以像素为单位表示。此值用于生成地址。行偏移将添加到各行末尾,用于确定下一行的起始地址。同样的,前景层的输出偏移寄存器为 DMA2D_FGOR,作用相同。


DMA2D 输出存储器地址寄存器 DMA2D_OMAR

image

MA[31:0]: 设置输出存储器地址,也就是 FIFO 所存储的数据地址,需要根据开窗的起始坐标来设置。以 800 * 480的 LCD 屏为例,假定帧缓存数组为:g_ltdc_framebuf,设置窗口的起始地址为:sx(<800),sy(<480),颜色格式为 RGB565 ,每个像素 2个字节,那么 MA 的设置值应该为:
MA[3:0] = g_ltdc_framebuf + 2 * (800 * sy + sx)
同样的,还有前景层的输出存储器地址寄存器 DMA2D_ FGMAR,作用和计算方法相同,控制的是前景层的存储器地址。


DMA2D 行数寄存器 DMA2D_NLR

image

控制每行的像素和行数,该寄存器对前景层和显示层都有效,配置该寄存器可设置开窗大小。
NL[15:0]: 设置待传输区域的行数,用于确定窗口的亮度。
PL[13:0]: 设置待传输区域的每行像素数,用于确定窗口的宽度。


DMA2D 输出颜色寄存器 DMA2D_OCOLR

image

该寄存器用于配置寄存器到存储器模式下,填充时所用的颜色值,一个 32位寄存器,可支持 ARGb8888 格式,也支持 RGB555 格式。


DMA2D 中断状态寄存器 DMA2D_ISR

image

该寄存器表示了 DMA2D 的各种标识,这里只关心 TCIF 位,表示 DMA2D 的传输完成中断标志,中断完成时置一。
使用DMA2D 的中断标志位清零寄存器: DMA2D_IFCR,用于清除 DMA2D_ISR 寄存器对应位的标志。通过向该寄存器的第 1位(CTCIF)写 1,可以用于清除 DMA2D_ISR 寄存器的 TCIF 位标志,其他同上。


博客导航

博客导航

http://www.jsqmd.com/news/23778/

相关文章:

  • 各个版本的sqlite-jdbc jar下载链接
  • [电脑]win10下SVN图标不显示
  • 2025/10/27~2025/11/2 做题笔记 - sb
  • echart - f
  • 完整教程:LinuxC++——etcd分布式键值存储系统入门
  • 基于MATLAB的光学CCD全息成像仿真程序实现
  • el-date-picker样式修改
  • 我从哪里起飞 从哪里降落 多少不能原谅的错 却不能重来过
  • unity管理器设计:Manager of Managers
  • iview table 排序 columns 里面写 sortable: custom 不要写 sortable: true 不然会进行二次内部排序序号等 字段。
  • 决策不再凭感觉!Tita用数据驱动销售与交付的一体化协同
  • 浅谈 Agent 开发工具链演进历程
  • 为IvorySQL增添PACKAGE语法帮助
  • MATLAB 时间序列小波周期分析
  • # 情绪日历应用(python AI项目)
  • 读《程序员修炼之道:从小工到专家》
  • 本地运行nginx服务,模拟线上环境访问项目
  • git提交远程项目步骤
  • 基于Redis海量数据场景分布式ID生成实践
  • 电梯调度算法结对编程作业
  • 【完结22章】从0到1,LangChain+RAG全链路实战AI知识库
  • 分享精选文章合集 - 2025-10-27
  • 20232416 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 2025 年搅拌器搅拌设备,侧入式搅拌设备,斜插式揽拌设备,卧式搅拌设备厂家最新推荐,聚焦资质、案例、售后的五家企业深度解读
  • 芯片实现路线图
  • 2025 年环保搅拌设备,搅拌装置设备,框式搅拌设备厂家最新推荐,实力品牌深度解析采购无忧之选!
  • 2025 年顶入式搅拌设备,直叶搅拌设备,节能减排搅拌设备厂家最新推荐,技术实力与市场口碑深度解析
  • 10.27总结
  • BongoCat日志搜索程序:正则表达式与高级筛选
  • WPF 自定义控件库