0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SWM341 DMA2D模块介绍

0xQC_gh_ed4f95b 来源:华芯微特32位MCU 2023-06-02 09:19 次阅读

1DMA2D模块基础知识

DMA2D是专用于图像处理的专业DMA。特别是刷单色屏,刷图片,刷Alpha(透明)混合效果全靠它,而且可以大大降低CPU利用率。

DMA2D主要实现了两个功能,一个是DMA数据传输功能,另一个是2D图形加速功能。

DMA数据传输

主要是两种方式,一个是寄存器到存储器,另一个是存储器到存储器。通过DMA可以大大降低CPU的利用率。

2D图形加速功能

支持硬件的颜色格式转换和Alpha混合效果。DMA2D可在以下四种模式下工作:

·寄存器到存储器

·存储器到存储器

·存储器到存储器并执行像素格式转换

·存储器到存储器并执行像素格式转换和混合

△DMA2D模块结构框示意图

2DMA2D前景层FIFO和背景层FIFO

DMA2D前景层FIFO和背景层FIFO获取要复制和/或处理的输入数据。这些FIFO根据相应像素格式转换器PFC中定义的颜色格式获取像素。

通过如下一组寄存器对它们进行编程

·DMA2D前景层存储器地址寄存器(FGMAR)

·DMA2D前景层偏移寄存器(FGOR)

·DMA2D背景层存储器地址寄存器 (BGMAR)

·DMA2D背景层偏移寄存器 (BGOR)

·DMA2D行数寄存器(行数和每行像素数)(NLR)

DMA2D在寄存器到存储器模式下工作时,不激活任何FIFO。

DMA2D在存储器到存储器模式下工作时(无像素格式转换和混合操作),仅激活FG FIFO,并将其用作缓冲区。

DMA2D在存储器到存储器模式下工作时并支持像素格式转换时(无混合操作),不会激活BG FIFO。

3DMA2D 前景层和背景层像素格式转换器

DMA2D前景层和背景层像素格式转换器 (PFC)执行像素格式转换,以生成每像素32位的值。PFC还能够修改alpha通道。

转换器在第一阶段转换颜色格式。前景层像素和背景层像素的原始颜色格式分别通过 FGPFCCR和BGPFCCR的CFMT [3:0] 位来配置。

颜色格式的编码方式如下:

·Alpha 值字段:透明【0xFF 值对应不透明像素,0x00 对应透明像素】

·R 字段代表红色

·G 字段代表绿色

·B 字段代表蓝色

如果原始格式不包括alpha通道,则会自动将alpha值设为0xFF(不透明)。通过ARGB8888模式支持按32位对齐24位RGB888。

生成32位值后,即可根据FGPFCCR/ BGPFCCR寄存器的AMODE [1:0]字段修改alpha 通道。

Alpha通道可以:

·保持不变(不做修改)

·替换为FGPFCCR/BGPFCCR的ALPHA[7:0]值

·换为原始alpha值与FGPFCCR/BGPFCCR的ALPHA [7:0]值的乘积除以255所得商。

4DMA2D混合器

DMA2D混合器成对混合源像素以计算结果像素。

混合将按以下公式执行:

3502f6a0-00e1-11ee-90ce-dac502259ad0.png

混合器不需要任何配置寄存器。是否使用混合器取决于CR寄存器的MODE[1:0]字段中定义的DMA2D工作模式。

5DMA2D输出PFC

输出PFC将像素格式从32位转换为指定的输出格式,输出格式在DMA2D输出像素格式转换器配置寄存器 (OPFCCR)的CFMT [2:0]字段中定义。

6DMA2D输出FIFO

输出FIFO根据输出PFC中定义的颜色格式对像素进行编程。

通过如下一组寄存器定义目标区域:

·DMA2D输出存储器地址寄存器 (OMAR)

·DMA2D输出偏移寄存器 (OOR)

·DMA2D行数寄存器(行数和每行像素数)(NLR)

如果DMA2D在寄存器到存储器模式下工作,则配置的输出矩形将以DMA2D输出颜色寄存器 (OCOLOR)中指定的颜色填充。

7DMA2D配置

DMA2D可在以下四种模式下工作,通过CR寄存器的MODE[1:0]位选择工作模式:

·寄存器到存储器

·存储器到存储器

·存储器到存储器并执行PFC

·存储器到存储器并执行PFC和混合

寄存器到存储器

寄存器到存储器模式用于以预定义颜色填充用户自定义区域。颜色格式在OPFCCR中设置。

DMA2D不从任何源获取数据。它只将OCOLOR寄存器中定义的颜色写入通过OMAR 寻址以及NLR和OOR定义的区域。

存储器到存储器

在存储器到存储器模式下,DMA2D不执行任何图形数据转换。前景层输入FIFO充当缓冲区,数据从FGMAR中定义的源存储单元传输到OMAR寻址的目标存储单元。

FGPFCCR寄存器的CFMT [3:0]位中编程的颜色模式决定输入和输出的每像素位数。

对于要传输的区域大小,源区域大小由NLR和FGOR寄存器定义,目标区域大小则由 NLR和OOR寄存器定义。

存储器到存储器并执行PFC

此模式下,DMA2D对源数据执行像素格式转换并将结果存储在目标存储单元。

对于要传输的区域大小,源区域大小由NLR和FGOR寄存器定义,目标区域大小则由 NLR和OOR寄存器定义。

从FGMAR寄存器定义的位置获取数据,并由前景层PFC进行处理。原始像素格式通过 FGPFCCR寄存器配置。

在颜色转换执行期间,可根据FGPFCCR寄存器中编程的值添加或更改alpha值。如果原始图像没有alpha通道,则会自动添加一个默认的alpha值0xFF以获得完全不透明的像素。

可根据FGPFCCR寄存器的AMODE [1:0]位修改alpha值:

·保持不变

·替换为FGPFCCR寄存器的ALPHA[7:0]值中定义的值

·替换为原始值与FGPFCCR寄存器的ALPHA[7:0]值的乘积除以255所得商

结果得到的32位数据由OUT PFC编码成OPFCCR寄存器的CFMT [2:0]字段所指定的格式。数据经处理后,将写入OMAR寻址的目标存储单元。

DMA数据传输

此模式下,将在前景层FIFO和背景层FIFO(分别在FGMAR和BGMAR中定义)获取两个源图像。

必须按存储器到存储器模式中所述配置两个像素格式转换器。由于这两个像素格式转换器各自独立,因此其配置可以不同。在每个像素都通过相应的PFC转换为32位后,将根据上述公式进行混合:输出PFC将根据指定的输出格式对得到的32位像素值进行编码,并且编码数据将写入OMAR寻址的目标存储单元。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模块
    +关注

    关注

    7

    文章

    2670

    浏览量

    47333
  • 寄存器
    +关注

    关注

    31

    文章

    5310

    浏览量

    119983
  • 存储器
    +关注

    关注

    38

    文章

    7448

    浏览量

    163589
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211109
  • DMA2D
    +关注

    关注

    0

    文章

    5

    浏览量

    2101

原文标题:SWM341 DMA2D模块介绍

文章出处:【微信号:gh_ed4f95bde4df,微信公众号:华芯微特32位MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问解码bmp图片时是否可以使用dma2d功能 ?

    请教下,解码bmp图片时是否可以使用dma2d功能 ? 具体描述如下: 没有使用 emWin 就是先读取整副 bmp 的数据,之后解码暂存,之后使用 dma2d 功能显示, 有没有这个必要或者这个能否能否实现啊,如果确定使用 d
    发表于 04-30 06:39

    转:DMA2D图形加速

    DMA2D(Chrom-Art Accelerator™)是专用于图像处理的专业 DMA,就是Chrom-Art加速器控制器DMA2D可以执行如下的几个工作:1、用特定颜色填充目标图像的一部分或全部
    发表于 08-11 09:52

    STM32F429的DMA2D应用之刷色块

    第46章 STM32F429的DMA2D应用之刷色块,位图和Alpha混合本章节为大家讲解DMA2D应用中经常用到的刷色块,刷位图,Alpha混合和图片混合的实现。目录第46章 STM32F429
    发表于 08-10 06:51

    怎样使用寄存器DMA2D传输LVGL配置

    我看了很多DMA2D教程都是用阻塞方式来刷新屏, 这样就消耗了性能 相当于没用DMA, 所以我使用DMA2D中断来传输数据测试平台stm32f429 + 正点原子7寸1024x600液晶屏
    发表于 01-26 06:22

    使用DMA2D外设加速ART-PI-LVGL的显存数据搬运

    使用”GPU”来为LVGL加速—DMA2D加速显存数据搬运二、DMA2D介绍在STM32高性能芯片中,可以使用DMA2D外设专门用来给LCD显示加速,有LTDC外设的型号中,通常也会配
    发表于 06-30 10:24

    怎样去解决STM32H735G-DK DMA2D起始地址漂移的问题呢

    我正在使用 CubeMX 生成起始文件而不是 BSP 示例。当我尝试设置 DMA2D 时,我发现起始地址将被移动 0xC。...// setup octospi2 for hyperram
    发表于 12-12 07:10

    STM32L4R9芯片的图形加速器DMA2D实例使用

    摘要:本文首先介绍STM32L4R9芯片的图形特性及相关的硬件模块,以及图形显示时各个模块的功能划分。尤其是针对DMA2D模块,详细描述主要
    发表于 02-07 14:27

    SWM341系列MCU数据手册

    SWM341 是一款基于 ARM○R Cortex®-M33 的 32 位微控制器。具有高性能、低功耗、代码密度大等突出特点,适用于工业控制、白色家电、电机驱动等诸多应用领域。SWM341 内嵌
    发表于 09-14 07:59

    STM32469I_EVAL-DMA2D

    单片机开发板STM32469I_EVAL的开发例程DMA2D
    发表于 06-03 15:48 7次下载

    Chrom-Art Accelerator控制器 (DMA2D)

    Chrom-Art Accelerator 控制器 (DMA2D) 本章适用于 STM32F42xxx 和 STM32F43xxx 系列。 11.1 DMA2D 简介 Chrom-Art
    发表于 12-05 15:39 12次下载

    "stm32 DMA2D使用中断LVGL,提高LVGL帧率"

    我看了很多DMA2D教程都是用阻塞方式来刷新屏 这样就消耗了性能 相当于没用DMA 所以我使用DMA2D中断来传输数据测试平台stm32f429 + 正点原子7寸1024x600液晶屏 45MHZ
    发表于 12-02 17:06 37次下载
    "stm32 <b class='flag-5'>DMA2D</b>使用中断LVGL,提高LVGL帧率"

    华芯微特SWM341系列微控制器主要性能 SWM34SRT6-50显示驱动应用

    本文介绍了华芯微特SWM341系列主要性能,和其系列之一的SWM34SRET6-50驱动4.3寸800*480 TFTLCD显示的例程应用。
    的头像 发表于 06-13 11:49 7298次阅读

    SWM341 DMA2D模块介绍

    SWM341 DMA2D模块介绍
    的头像 发表于 11-06 17:11 683次阅读
    <b class='flag-5'>SWM341</b> <b class='flag-5'>DMA2D</b><b class='flag-5'>模块</b><b class='flag-5'>介绍</b>

    SWM341系列之86盒智能开关应用

    SWM341系列之 86盒智能开关应用
    的头像 发表于 11-10 18:25 1084次阅读
    <b class='flag-5'>SWM341</b>系列之86盒智能开关应用

    SWM341系列之SWM34SRET6介绍

    SWM341系列之SWM34SRET6介绍
    的头像 发表于 10-27 10:19 2063次阅读
    <b class='flag-5'>SWM341</b>系列之<b class='flag-5'>SWM</b>34SRET6<b class='flag-5'>介绍</b>