早上好,
我们使用 STM32H7 以 5MSPS 的速率同时采集 3 个 16 位 ADC 通道,并将数据存储在外部 eMMC 中。一切都值得无缝如下: 3 个从属 SPI 和 3 个 DMA 到内部触发器缓冲器;MDMA 将数据交错到 2 个触发器 eMMC 缓冲区;SDMMC 外设到 eMMC 的 IDMA。eMMC 引入了一些意外的等待时间,需要在内部缓冲比预期更多的数据,并且由于我们没有足够的内部 RAM 在 eMMC 等待期间进行足够的缓冲(并且无法在 FMC 上添加外部 RAM,或在 Quad 上添加 nvSRAM -SPI,...由于集成限制),我们研究了使用带有内部闪存的 MDMA 来临时缓冲数据。这是个坏主意吗?STM32H7 上的 FLASH 分为 2 个 bank,第一个可用于程序存储器(因此在 DMA 访问期间不会发生冲突和处理器停止),并且有 2 个 AXI 控制器,MDMA 也是一个 AXI 外围设备……也许速度太慢了?你们有没有人试过这个?
当我们阅读参考手册(第 13 章:MDMA 控制器(MDMA))时:
主直接存储器访问 (MDMA) 用于在存储器和存储器之间或外设和存储器之间提供高速数据传输。MDMA 无需任何 CPU 操作即可快速移动数据。这使 CPU 资源可以自由用于其他操作。
但是 MDMA 可能只能将数据从 AXI 移动到 AHB 或 AHB 到 AXI,而不是 AXI 到 AXI?
最好的问候,克莱门特