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

    文章

    7484

    浏览量

    163759
  • RGB
    RGB
    +关注

    关注

    4

    文章

    798

    浏览量

    58460
  • 计时器
    +关注

    关注

    1

    文章

    420

    浏览量

    32689
  • PWM波
    +关注

    关注

    0

    文章

    99

    浏览量

    16854
  • DMA控制器
    +关注

    关注

    1

    文章

    43

    浏览量

    12270

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

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

收藏 人收藏

    评论

    相关推荐

    DMA是什么?详细介绍

    DMA(Direct Memory Access)是一种允许某些硬件子系统直接访问系统内存的技术,而无需中央处理单元(CPU)的介入。这种技术可以显著提高数据传输速率,减轻
    的头像 发表于 11-11 10:49 4477次阅读

    DMA控制器的主要功能有哪些

    DMA(Direct Memory Access)控制器是一种在系统内部转移数据的独特外设,其主要功能是实现内存与外设之间的直接数据传输,而无需CPU的频繁干预。这种数据传输方式显著提高了数据传输的效率和速度,
    的头像 发表于 08-20 10:41 1400次阅读

    简述DMA控制器的工作过程

    DMA(Direct Memory Access)控制器的工作过程是一个复杂但高效的硬件执行过程,它实现了内存与外设之间直接的数据传输,显著减轻CPU
    的头像 发表于 08-20 10:35 959次阅读

    经验分享 | DMA助力实时控制

    直接存储访问(DMA,DirectMemoryAccess)的优点·提高系统效率:通过绕过CPUDMA显著减少了数据传输对CPU资源的占
    的头像 发表于 07-18 08:18 789次阅读
    经验分享 | <b class='flag-5'>DMA</b>助力实时<b class='flag-5'>控制</b>

    RL78系列MCU DMA在UART中的使用

    对于RL78系列的MCU,为了提高运行效率,减少CPU的占用,建议UART数据收发使用DMA功能。DMA(Direct Memory Access)是RL78 MCU内置的一个控制器
    的头像 发表于 07-17 14:24 623次阅读
    RL78系列MCU <b class='flag-5'>DMA</b>在UART中的使用

    cpu的运算控制器的作用是什么

    CPU的运算控制器是计算机的核心组成部分,它们共同完成计算机的各种运算和控制任务。下面我们将详细介绍运算
    的头像 发表于 06-30 11:15 2090次阅读

    cpu控制器负责什么运算

    CPU控制器,也称为中央处理控制器或处理控制器,是计算机系统中的核心部件之一。它负责执行各种
    的头像 发表于 06-30 11:14 878次阅读

    简述cpu控制器的工作原理

    CPU(中央处理控制器是计算机的核心部件之一,负责控制整个计算机系统的运行。它的工作原理非常复杂,涉及到许多方面,包括指令的获取、解码、执行、结果的存储等。以下是对
    的头像 发表于 06-30 11:04 1348次阅读

    cpu控制器和运算组成的部件有哪些

    CPU(中央处理)是计算机的核心部件,负责执行程序指令和处理数据。CPU主要由控制器和运算组成,这两个部件共同完成计算机的运算任务。下面
    的头像 发表于 06-30 11:01 1824次阅读

    cpu控制器的两种类型和特点

    CPU控制器,即中央处理控制器,是计算机硬件的核心部件之一,负责执行程序指令和控制计算机的运行。CPU
    的头像 发表于 06-30 10:59 1270次阅读

    cpu控制器的主要作用是什么

    CPU控制器,即中央处理控制器,是计算机系统中的核心部件之一。它负责执行程序指令,控制数据的输入输出,以及协调计算机系统中各个部件的工作。
    的头像 发表于 06-30 10:52 2360次阅读

    cpu控制器的功能是什么

    CPU控制器,即中央处理控制器,是计算机硬件的核心部件之一,负责协调和管理计算机的各个部件,实现计算机的运算、控制和存储等功能。
    的头像 发表于 06-30 10:48 2121次阅读

    请问STM32F072的DMA可以分时复用吗?

    请问各位内行,如果ADC,DAC,SPI,RS232,4个设备可以分时复用DMA控制器的7个通道吗?先谢了。
    发表于 05-15 06:53

    dma和串口直接发送的区别

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

    dma和通道技术的区别

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