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

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

3天内不再提示

什么是DMA?DMA究竟有多快!

工程师看海 来源:工程师看海 作者:工程师看海 2024-02-22 10:43 次阅读

直接内存访问(Direct Memory Access,DMA):在计算机体系结构中,DMA 是一种数据传输方式,允许外部设备直接访问计算机的内存,而无需通过中央处理单元(CPU)的干预。这有助于提高数据传输速度和系统效率。

那么,DMA究竟有多快呢?

实践出真知

恰好,最近有个多通道数据采集的项目,受限于通道数多、分辨率高,而系统带宽有限,为了尽可能充分利用有限带宽,就得想办法优化时序,把时间都留给数据采集和传输。

优化方向就是DMA。

硬件链路是ADC通过SPI接口将数据发送给STM32单片机,单片机再将数据发送到上位机

咱们的目标就是优化SPI这边,先看普通采集模式。

下图是普通采集模式,SPI每传输1个字节后,就有一段时间的空闲,这段时间就白白浪费了。

64673866-bbe4-11ee-9b10-92fbcf53809c.png

再看下,开启DMA之后的效果。SPI可以连续工作,时钟速率稳定在20MHz,高效工作。

这就是DMA的强大之处!

646b5176-bbe4-11ee-9b10-92fbcf53809c.png

问题来了,为什么上图中的波形,有这么大的震荡呢?

答案可以参考我的原创书籍《硬件设计指南》

6477b4ca-bbe4-11ee-9b10-92fbcf53809c.png

如果看到这里,请点赞、收藏、分享三连!

限时免费扫码进群,交流更多行业技术

647b9bc6-bbe4-11ee-9b10-92fbcf53809c.png

审核编辑 黄宇

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

    关注

    9

    文章

    1526

    浏览量

    63562
  • dma
    dma
    +关注

    关注

    3

    文章

    535

    浏览量

    99020
收藏 人收藏

    评论

    相关推荐

    Xilinx高性能PCIe DMA控制器IP,8个DMA通道

    基于PCI Express Integrated Block,Multi-Channel PCIe QDMA Subsystem实现了使用DMA地址队列的独立多通道、高性能Continous
    的头像 发表于 02-22 11:11 300次阅读
    Xilinx高性能PCIe <b class='flag-5'>DMA</b>控制器IP,8个<b class='flag-5'>DMA</b>通道

    雅特力AT32F423 DMA使用指南

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

    dma和串口直接发送的区别

    DMA(Direct Memory Access)和串口直接发送是两种不同的数据传输方式,它们在实现上有着明显的区别和优劣势。本文将详细介绍DMA和串口直接发送的原理、优缺点以及适用场景。 首先
    的头像 发表于 01-07 17:43 1266次阅读

    dma和通道技术的区别

    DMA(Direct Memory Access)和通道技术是计算机系统中用来优化数据传输和处理的重要技术。尽管它们都与数据传输相关,但它们在实现方法、特点和应用场景等方面存在一些重要的区别
    的头像 发表于 01-04 14:31 603次阅读

    STM32的DMA的五大问题

    1,DMA控制器的内部结构STM32中的DMA控制器是一种用于在外设和存储器之间传输数据的专用硬件。DMA控制器的内部结构主要包括以下几个关键部分:通道:DMA控制器可以有多个通道,每
    的头像 发表于 12-10 08:00 608次阅读
    STM32的<b class='flag-5'>DMA</b>的五大问题

    STM32 DMA传输的问题分析

    用户使用STM32G473RET6芯片,开发环境STM32CubeMX+Keil(LL库)。使用DMA1通道1,在半传输中断和完全传输中断里,拷贝ADC采集的数据。在应用过程中发现DMA半传输中断和完全传输中断不能独立使用。
    的头像 发表于 12-01 09:19 1086次阅读
    STM32 <b class='flag-5'>DMA</b>传输的问题分析

    DMA不产生传输完成中断

    DMA不产生传输完成中断
    的头像 发表于 10-18 16:44 728次阅读
    <b class='flag-5'>DMA</b>不产生传输完成中断

    STM32 TIMER+DMA输出PWM异常案例的问题解析

    有人使用STM32U575的TIMER加上DMA做PWM输出。具体就是利用某TIMER的一个通道的比较事件触发DMA,通过DMA修改CCR值来实现指定占空比的PWM输出。
    的头像 发表于 09-28 09:04 4248次阅读
    STM32 TIMER+<b class='flag-5'>DMA</b>输出PWM异常案例的问题解析

    DMA是什么意思啊 DMA的使用思路

    DMA(Direct Memory Access, 直接存储区访问) 为实现数据高速在外设寄存器与存储器之间或者存 储器与存储器之间传输提供了高效的方法。
    发表于 08-10 14:45 4486次阅读
    <b class='flag-5'>DMA</b>是什么意思啊 <b class='flag-5'>DMA</b>的使用思路

    STM32U5 ADC+DMA配置演示

    随意选择ADC1的4个通道,扫描模式,连续转换,DMA传输转换结果并令DMA工作在外设字到内存字的循环传输模式。使用CubeMx进行配置。其中DMA通道使用Channel 1。
    的头像 发表于 07-29 16:19 853次阅读
    STM32U5 ADC+<b class='flag-5'>DMA</b>配置演示

    STM32F1的DMA使用

    在前面我们提到过 DMA,这一章我们就来学习 STM32F1 的DMA 使 用。要实现的功能是:通过 K_UP 按键控制 DMA 串口 1 数据的传送,在传送过程中让 D2 指示灯不断闪烁,直到数据
    的头像 发表于 06-22 10:23 1555次阅读
    STM32F1的<b class='flag-5'>DMA</b>使用

    MSPM0L1306开发板教程之DMA

    DMA使用是一个不需要CPU干预,自己搬运数据的模块,在前面讲中断事件的章节里面,就有提到过事件的DMA通道,DMA事件路由(DMA Event Route)。
    的头像 发表于 06-09 18:21 1507次阅读
    MSPM0L1306开发板教程之<b class='flag-5'>DMA</b>

    STM32实例教程-DMA实验

    在前面我们提到过 DMA,这一章我们就来学习 STM32F1 的DMA 使用。要实现的功能是:通过 K_UP 按键控制 DMA 串口 1 数据的传送,在传送过程中让 D2 指示灯不断闪烁,直到数据
    发表于 05-24 09:20 771次阅读
    STM32实例教程-<b class='flag-5'>DMA</b>实验

    10行代码,就能让你真正理解DMA

    dma
    YS YYDS
    发布于 :2023年05月22日 15:44:18

    STM32采用串口DMA方式向上位机连续发送数据

    目录前言一、DMA简介1.1DMA功能框图1.1.1DMA 请求1.1.2通道1.1.3仲裁器1.2DMA数据配置 1.2.1数据传输方向:1.2.2数据传输大小和单位1.2.3什么时
    发表于 05-11 09:32 2次下载
    STM32采用串口<b class='flag-5'>DMA</b>方式向上位机连续发送数据