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

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

3天内不再提示

请问DMA控制器可以减轻CPU负担吗?

得捷电子DigiKey 来源:得捷电子DigiKey 2024-03-28 09:41 次阅读

浅谈直接存储器访问 ( DMA ) 控制器的结构与工作原理

直接存储器访问 ( DMA )控制器,可以在内存和/或外设之间传输数据,而不需要 CPU 参与每次传输。合理利用 DMA 控制器,可以减轻CPU的负担。

先进的 DMA 控制器,如STMicroelectronicsSTM32F4系列中包含的控制器,可以通过灵活的数据流分配和传输管理功能进一步减轻 CPU 的负担。

如图左侧所示,来自8个不同的通道 DMA 请求,并到仲裁器上,从而建立优先级(编号较低的输入通道,具有较高的优先级)。然后激活最高优先级的传输,传输到图中右侧的两个 AHB 主设备(存储器端口和外设接口),提高了外设到存储器传输的效率。这可能是 DMA 在基于 CPU 的设计中最常见的情况。

c6e003e2-ec3b-11ee-a297-92fbcf53809c.png

图 1STM32F4系列DMA控制器(图片来源于STMicroelectronics*)*

为每个路径分配单独的 FIFO,如图1中间所示,允许针对每个外设接口的特性调整 FIFO 特性。例如,FIFO 的阈值级别(请求传输的深度)可以单独设置为 FIFO 大小的¼,½或¾。这允许低速通道等待,直到FIFO 几乎满了才进行传输,以最小化开销。更快的通道会更早地启动传输,可能只有一半大小,以避免FIFO 溢出。

我们来通过一个实例,来看看DMA怎么工作的。

实例:使用STM32 来控制 NeoPixels LED

硬件部分采用STM32 开发板,与 NeoPixelLED、灯带、矩阵等相连接。

c6f9e3fc-ec3b-11ee-a297-92fbcf53809c.png

RGB NeoPixels 实际上是 WS2812 智能控制 LED。下面是WS2812 LED 的3字节数据协议的结构,分别代表绿红蓝三个信息

c711d2dc-ec3b-11ee-a297-92fbcf53809c.png

图 2 WS2812 LED 的3字节数据协议的结构

使用计时器来PWM控制波形,然后配置DMA使CPU高效并且易于实施。

c71ba8a2-ec3b-11ee-a297-92fbcf53809c.png

图 3 WS2812 LED 的0和1位的计时图

在软件中,配置 DMA,选择了“TIM2_CH3/UP”,将方向改为“内存到外设”。同时,将优先级改为“非常高”,最后保存.ioc 文件,以生成项目代码。

c73451f4-ec3b-11ee-a297-92fbcf53809c.png




审核编辑:刘清

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

    关注

    38

    文章

    7151

    浏览量

    162002
  • RGB
    RGB
    +关注

    关注

    4

    文章

    763

    浏览量

    57412
  • 计时器
    +关注

    关注

    1

    文章

    395

    浏览量

    32157
  • PWM波
    +关注

    关注

    0

    文章

    98

    浏览量

    16704
  • DMA控制器
    +关注

    关注

    1

    文章

    43

    浏览量

    12117

原文标题:DMA 控制器可以减轻CPU负担 前提是配置得当!

文章出处:【微信号:得捷电子DigiKey,微信公众号:得捷电子DigiKey】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    雅特力AT32F423 DMA使用指南

    DMA简介DMA控制器的作用不仅在增强系统性能并减少处理器的中断生成,而且还针对32位MCU应用程序专门优化设计。DMA控制器为存储器到存储
    的头像 发表于 02-22 08:13 216次阅读
    雅特力AT32F423 <b class='flag-5'>DMA</b>使用指南

    dma和串口直接发送的区别

    ,我们先来介绍一下DMA和串口直接发送的原理和工作方式。 DMA是一种高速数据传输技术,它允许外设直接与内存进行数据交换,而不需要CPU的介入。有了DMA技术,
    的头像 发表于 01-07 17:43 1281次阅读

    dma和通道技术的区别

    DMA是一种通过绕过中央处理器(CPU)来直接访问内存的机制。它允许外部设备(如硬盘驱动器、网卡等)直接与内存进行数据传输,而无需通过CPU的干预。DMA的设计理念是提高数据传输的
    的头像 发表于 01-04 14:31 608次阅读

    STM32的DMA的五大问题

    1,DMA控制器的内部结构STM32中的DMA控制器是一种用于在外设和存储器之间传输数据的专用硬件。DMA
    的头像 发表于 12-10 08:00 624次阅读
    STM32的<b class='flag-5'>DMA</b>的五大问题

    小白都看得懂的STM32的DMA知识

    一、DMA简介1、DMA简介DMA(DirectMemoryAccess:直接内存存取)是一种可以大大减轻
    的头像 发表于 11-27 08:00 1178次阅读
    小白都看得懂的STM32的<b class='flag-5'>DMA</b>知识

    STM32基础知识:串口通信-DMA方式

    直接存储器访问 (DMA) : 用于在外设与存储器之间以及存储器与存储器之间进行高速数据传输。DMA传输过程的初始化和启动由CPU完成,传输过程由DMA
    的头像 发表于 10-26 11:48 1171次阅读
    STM32基础知识:串口通信-<b class='flag-5'>DMA</b>方式

    【微控制器基础】——CPU内核与整体配置(上)

    【微控制器基础】——CPU内核与整体配置(上)
    的头像 发表于 10-17 17:19 470次阅读
    【微<b class='flag-5'>控制器</b>基础】——<b class='flag-5'>CPU</b>内核与整体配置(上)

    使用STM32F101xx和STM32F103xx的DMA控制器

    这篇应用笔记描述了怎么使用STM32F101xx 和 STM32F103xx的直接存储访问(DMA)控制器。STM32F101xx和STM32F103xx的DMA
    发表于 10-10 08:20

    STM32F0xx的DMA控制器的使用

    电子发烧友网站提供《STM32F0xx的DMA控制器的使用.pdf》资料免费下载
    发表于 09-21 14:49 0次下载
    STM32F0xx的<b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>的使用

    使用STM32F2和STM32F4 DMA控制器

    电子发烧友网站提供《使用STM32F2和STM32F4 DMA控制器.pdf》资料免费下载
    发表于 09-21 11:44 0次下载
    使用STM32F2和STM32F4 <b class='flag-5'>DMA</b><b class='flag-5'>控制器</b>

    DMA的应用方法

    拖延,反而可以去处理其他的工作。DMA对于高效能嵌入式系统算法和网络传输是很重要的。 在实现DMA传输时,是由DMA控制器直接掌管总线,因此
    发表于 08-16 06:19

    Arm®CoreLink™ DMA-350控制器技术参考手册

    CoreLink DMA-350是一款具有AMBA®AXI5接口的直接内存访问控制器(DMAC), 它提供快速存储到存储、外围设备到存储
    发表于 08-02 08:03

    通过几个实例说明如何减轻CPU负担

    CPU运行时间是宝贵的资源,我们要把有限的CPU时间投入到更有意义的事情中去。
    的头像 发表于 07-03 16:41 791次阅读
    通过几个实例说明如何<b class='flag-5'>减轻</b><b class='flag-5'>CPU</b><b class='flag-5'>负担</b>

    AN-1561:ADuCM4050的DMA编程

    直接存储器访问(DMA控制器执行数据传输任务,并从ADuCM4050微控制器单元(MCU)卸载这些任务。DMA 在外设和存储器之间提供高速数据传输。
    的头像 发表于 06-16 16:24 476次阅读
    AN-1561:ADuCM4050的<b class='flag-5'>DMA</b>编程

    GD32开发实战指南(基础篇) 第11章 CPU的高级代理-DMA

    或者存储器和存储器之间的高速数据传输,因而被广泛地使用。早在 8086 的应用中就已经有 Intel 的 8237 这种典型的 DMA 控制器,而 GD32的 DMA 则是以类似外设的形式添加到 Cortex 内核之外的。
    的头像 发表于 05-16 08:59 3446次阅读
    GD32开发实战指南(基础篇) 第11章 <b class='flag-5'>CPU</b>的高级代理-<b class='flag-5'>DMA</b>