当前位置: 首页 > 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://icebutterfly214.com/news/244/

相关文章:

  • el-date-picker样式修改
  • 浅谈 Agent 开发工具链演进历程
  • 电梯调度算法结对编程作业
  • 2025质量可靠的义乌刺绣工厂推荐榜
  • DP1312多协议高性能读卡芯片支持A/B/Felaca/18092智能门锁读卡器模拟卡兼容PN512 - 动能世纪
  • 2025年10月兰花油品牌推荐榜单:多维度深度对比与选择指南
  • 2025 年1KV 冷缩硅橡胶电缆附件,冷热缩电缆附件,绕包电缆附件,熔接电缆附件厂家最新推荐,产能、专利、环保三维数据透视
  • 低代码开发便捷的技术深度解析
  • 2025年浅拾兰花双萃致臻精华油:从成分与科技维度解析其护肤功效
  • 销售公司绩效考核全攻略:维度、原则与数字化赋能方案
  • 题解:P4434 [COCI 2017/2018 #2] ​​Usmjeri
  • 小程序-跳转到公众号
  • 如何解决一堆向量的问题?10、Self-attention - -一叶知秋
  • 洞悉过往,一目了然:浅述视频融合平台EasyCVR如何实现海量视频录像的智能检索与高效回看
  • 2025年国内外五款AI编程工具深入对比与推荐排行
  • CSPS 前后的话
  • 2025 年 10 月云仓 ERP,云仓 saas 系统,云仓代发系统公司最新推荐,技术实力与市场口碑深度解析
  • iOS混淆实战用多工具组合把IPA加固做成可复用的工程能力(iOS混淆 IPA加固 无源码混淆
  • cyclonessd ROS2 lidar topic 数据丢帧 系统配置
  • 2025 年 10 月 WMS 系统,WMS 软件,wms 仓储管理系统公司最新推荐,聚焦资质、案例、售后的优质机构深度解读
  • Go语言测试全攻略:从单元测试到模糊测试
  • 2025 年 10 月进销存 erp,供应链 erp,零售 ERP 公司最新推荐,聚焦资质、案例、售后的五家机构深度解读!