DMA2D(Chrom‑ART Accelerator)

DMA2D = 2D 图形专用 DMA,单片机简易 2D 硬件加速器

普通 DMA(DMA1/DMA2)只会单纯搬运字节,不做任何计算; DMA2D 只做存储器↔存储器操作,不对接 UART/ADC/SPI 这类外设,专门干像素图像处理CSDN博...。

  1. 寄存器 → 存储器(Register‑to‑Memory) 把寄存器里设置的单一颜色,批量填充到一块内存(帧缓存)。 ✅典型:清屏、画纯色矩形块。源不是内存,是颜色寄存器值。
  2. 存储器 → 存储器(Memory‑to‑Memory) 普通内存拷贝,和 DMA2 的 mem‑to‑mem 类似,原样复制像素块。 ✅典型:把图片缓冲区整块拷贝到 LCD 显存。
  3. 存储器 → 存储器 + 颜色格式转换 搬运同时硬件自动转像素格式,CPU 不用算。 例:源是 RGB888 图片,目标显存是 RGB565,DMA2D 硬件直接完成格式转换搬运。
  4. 存储器 → 存储器 + 格式转换 + Alpha 透明混合 双输入:前景图层 + 背景图层,硬件做 Alpha 透明度混合叠加,输出结果到目标内存。 ✅典型:UI 半透明弹窗、叠加图标,LVGL/EMWIN 图形库会大量使用此硬件加速,解放 CPU。

DMA2D 全部操作都在内存之间(片内 RAM、外部 SDRAM 显存、Flash 只读做源),不能直接发送给 UART、SPI 外设,这点和普通 DMA 完全不一样CSDN博...。

典型使用场景

  1. 快速清屏,填充矩形色块;
  2. 图片拷贝到 LCD 帧缓存(显存一般放在外部 SDRAM);
  3. 图片像素格式硬件转换;
  4. UI 图层透明叠加,LVGL 打开 DMA2D 加速可以大幅降低 CPU 占用;
  5. 局部屏幕刷新,只更新屏幕一小块区域。

容易混淆点

  • LTDC:LCD 屏幕控制器,负责持续把显存数据输出到 TFT 屏幕硬件;
  • DMA2D:图形加速器,负责修改显存里面的像素内容;

LTDC 负责 “往外刷屏幕”,DMA2D 负责 “往显存里面画图”,两者经常搭配使用。