STM32H7 上的 MDMA 和内部 FLASH R/W

MDMA & internal FLASH R/W on STM32H7

早上好,

我们使用 STM32H7 以 5MSPS 的速度同时采集 3 个 16 位 ADC 通道,并将数据存储在外部 eMMC 中。一切都值得无缝如下: 3 个从属 SPI,带有 3 个 DMA 到内部 flip/flop 缓冲区; 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))时:

The master direct memory access (MDMA) is used in order to provide high-speed data transfer between memory and memory or between peripherals and memory. Data can be quickly moved by the MDMA without any CPU action. This keeps the CPU resources free for other operations.

但是 MDMA 可能只能将数据从 AXI 移动到 AHB 或从 AHB 移动到 AXI,而不能将数据从 AXI 移动到 AXI?

此致, 克莱门特

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

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

将数据保存到SRAM中,然后就可以真正烧写FLASH了。如果您需要存储大量数据 - 将需要外部 S(D)RAM。