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




审核编辑:刘清

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

    关注

    39

    文章

    7780

    浏览量

    172725
  • RGB
    RGB
    +关注

    关注

    4

    文章

    843

    浏览量

    62440
  • 计时器
    +关注

    关注

    1

    文章

    435

    浏览量

    35490
  • PWM波
    +关注

    关注

    0

    文章

    101

    浏览量

    17848
  • DMA控制器
    +关注

    关注

    1

    文章

    43

    浏览量

    12995

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入解析NCP81246:适用于IMVP8 CPU应用的三轨控制器

    深入解析NCP81246:适用于IMVP8 CPU应用的三轨控制器 在电子设计领域,为英特尔IMVP8兼容CPU提供稳定、高效的电源解决方案至关重要。onsemi的NCP81246三轨控制器
    的头像 发表于 06-02 14:15 124次阅读

    深入剖析NCP81243:用于桌面和笔记本CPU应用的双输出控制器

    深入剖析NCP81243:用于桌面和笔记本CPU应用的双输出控制器 在电子设备的电源管理领域,一款性能卓越的控制器对于保障CPU等核心组件的稳定运行至关重要。今天,我们就来深入了解安森
    的头像 发表于 06-02 14:15 86次阅读

    探索NCP81248:专为IMVP8 CPU打造的三轨控制器

    探索NCP81248:专为IMVP8 CPU打造的三轨控制器 在电子工程领域,为英特尔IMVP8兼容CPU提供精确且高效的电源解决方案至关重要。onsemi的NCP81248三轨控制器
    的头像 发表于 06-02 13:55 112次阅读

    MAX1639:高性能CPU电源降压控制器的设计与应用

    MAX1639:高性能CPU电源降压控制器的设计与应用 在高端计算机系统中,CPU电源的稳定性和高效性至关重要。MAX1639作为一款超高性能的降压DC - DC控制器,为
    的头像 发表于 03-21 10:15 793次阅读

    MAX1638:高性能CPU电源降压控制器的设计与应用

    MAX1638:高性能CPU电源降压控制器的设计与应用 在当今的高端计算机系统中,CPU电源的稳定性和高效性至关重要。MAX1638作为一款超高性能的降压DC - DC控制器,为
    的头像 发表于 03-21 10:05 759次阅读

    探索MAX797H:高性能CPU电源降压控制器

    探索MAX797H:高性能CPU电源降压控制器 在电子设备的设计中,电源管理是至关重要的一环,尤其是对于CPU这样的核心组件。今天,我们就来深入了解一款高性能的电源降压控制器——MAX
    的头像 发表于 03-19 13:40 351次阅读

    MAX1544:AMD Hammer CPU核心电源的双相快速PWM控制器

    MAX1544:AMD Hammer CPU核心电源的双相快速PWM控制器 在电子设备的电源管理领域,为特定CPU设计高效、稳定的电源供应方案是至关重要的。今天,我们就来深入探讨一款专为AMD
    的头像 发表于 03-17 15:05 255次阅读

    MAX1519/MAX1545:可编程CPU核心电源的双相Quick - PWM控制器

    MAX1519/MAX1545:可编程CPU核心电源的双相Quick - PWM控制器 在电子设计领域,为CPU核心电源选择合适的控制器至关重要。今天我们就来深入探讨一下Maxim公司
    的头像 发表于 03-17 14:55 274次阅读

    深入解析MAX17410:IMVP6+ CPU核心电源的理想控制器

    深入解析MAX17410:IMVP6+ CPU核心电源的理想控制器 在当今的电子设备中,CPU的性能不断提升,对电源的要求也越来越高。对于笔记本电脑等设备的IMVP6+ CPU核心电源
    的头像 发表于 03-17 14:30 267次阅读

    基于AXI DMA IP核的DDR数据存储与PS端读取

    添加Zynq Processing System IP核,配置DDR控制器和时钟。7000系列的Zynq可以参考正点原子DMA回环测试设置。
    的头像 发表于 11-24 09:25 3771次阅读
    基于AXI <b class='flag-5'>DMA</b> IP核的DDR数据存储与PS端读取

    哪些场景适合使用DMA

    DMA(直接内存访问)控制器允许外设和内存之间或内存和内存之间直接传输数据,而无需CPU的参与。这可以大大减轻
    发表于 11-12 07:13

    AT32F421C8T7微控制器现货库存

    )。USART:2 个接口,支持 LIN、IrDA 和 ISO7816 协议,适用于串行通信。红外发射:1 个,支持红外遥控应用。DMA 控制器1 个 5 通道 DMA
    发表于 11-05 09:40

    蜂鸟内核中DMA的硬件实现——寄存配置

    DMA,Direct Memory Access,直接内存访问,是一种不经过CPU而直接从内存存取数据的数据交换模式。在DMA模式下,CPU只需要向
    发表于 10-24 08:46

    M483SIDAE SD控制器,无法使用DMA读取从SDHC获取正确的数据,怎么解决?

    1、至于M483SIDAE SD控制器,我们无法使用DMA读取从SDHC获取正确的数据 对于SD接口,我们只使用SD0,所以我们连接SD0_DAT0~3和SD0_CMD,SD0_CLK到SD插槽,但
    发表于 08-28 06:21

    第十五章 DMA

    本章介绍DMA(直接存储存取),其可在不占用CPU的情况下搬数据,支持多种传输方向,含控制器、通道等配置及相关实验代码。
    的头像 发表于 06-14 16:32 1718次阅读
    第十五章 <b class='flag-5'>DMA</b>