1

早上好,

我们使用 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?

最好的问候,克莱门特

4

2 回答 2

3

查看数据表,我认为内部闪存不能胜任这项任务。

H743 闪存编程

因此,写入 266 位(32 字节+ECC)需要 100-200 微秒。它大约为 2.66 Mbits/s,远不及您的传入数据速率。然后在重新使用之前必须擦除闪存扇区,这需要几秒钟才能用于 128 KB 块。最重要的是,您可以预期闪存仅在 10000 次写入周期后就会开始磨损。

于 2019-03-15T12:32:28.717 回答
0

将数据保存到 SRAM,然后您就可以实际对 FLASH 进行编程了。如果您需要存储大量数据 - 将需要外部 S(D)RAM。

于 2019-03-16T09:24:16.880 回答