直接内存访问(Direct Memory Access,DMA):在计算机体系结构中,DMA 是一种数据传输方式,允许外部设备直接访问计算机的内存,而无需通过中央处理单元(CPU)的干预。这有助于提高数据传输速度和系统效率。
那么,DMA究竟有多快呢?
实践出真知
恰好,最近有个多通道数据采集的项目,受限于通道数多、分辨率高,而系统带宽有限,为了尽可能充分利用有限带宽,就得想办法优化时序,把时间都留给数据采集和传输。
优化方向就是DMA。
硬件链路是ADC通过SPI接口将数据发送给STM32单片机,单片机再将数据发送到上位机。
咱们的目标就是优化SPI这边,先看普通采集模式。
下图是普通采集模式,SPI每传输1个字节后,就有一段时间的空闲,这段时间就白白浪费了。
再看下,开启DMA之后的效果。SPI可以连续工作,时钟速率稳定在20MHz,高效工作。
这就是DMA的强大之处!
问题来了,为什么上图中的波形,有这么大的震荡呢?