[工业控制]

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

[复制链接]
327|3
手机看帖
扫描二维码
随时随地手机跟帖
帛灿灿|  楼主 | 2024-1-31 12:07 | 显示全部楼层 |阅读模式
直接内存访问(Direct Memory Access,DMA):在计算机体系结构中,DMA 是一种数据传输方式,允许外部设备直接访问计算机的内存,而无需通过中央处理单元(CPU)的干预。这有助于提高数据传输速度和系统效率。
那么,DMA究竟有多快呢?
实践出真知
恰好,最近有个多通道数据采集的项目,受限于通道数多、分辨率高,而系统带宽有限,为了尽可能充分利用有限带宽,就得想办法优化时序,把时间都留给数据采集和传输。
优化方向就是DMA。
硬件链路是ADC通过SPI接口将数据发送给STM32单片机,单片机再将数据发送到[url=]上位机[/url]。
咱们的目标就是优化SPI这边,先看普通采集模式。
下图是普通采集模式,SPI每传输1个字节后,就有一段时间的空闲,这段时间就白白浪费了。

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

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

使用特权

评论回复
classroom| | 2024-2-20 12:16 | 显示全部楼层
没看到什么图片啊,图片补上看看

使用特权

评论回复
自动化陈稳| | 2024-2-24 13:54 | 显示全部楼层
亲,没有图呀,不过通过文字可以理解,DMA传输的间隔可能引入了一些震荡,可以检查DMA的配置和触发方式,还需要检查DMA缓冲区的设置,保障它足够大,可以容纳一次传输的数据,并且没有溢出或者缓冲区过小的问题。希望有用。

使用特权

评论回复
FranklinUNK| | 2024-3-11 10:49 | 显示全部楼层
dma好像可以留一半给CPU

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

2904

帖子

0

粉丝