Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MDMA&;STM32H7上的内部闪光灯_Stm32_Dma_Flash Memory_Amba_Mdma - Fatal编程技术网

MDMA&;STM32H7上的内部闪光灯

MDMA&;STM32H7上的内部闪光灯,stm32,dma,flash-memory,amba,mdma,Stm32,Dma,Flash Memory,Amba,Mdma,早上好 我们使用STM32H7同时采集3个ADC通道16位@5MSPS,并将数据存储在外部eMMC中。一切都有价值,如下所示: 3个从SPI,带3个DMA至内部触发器缓冲器;MDMA将数据交织到2个触发器eMMC缓冲器;SDMMC外围设备至eMMC的IDMA。 eMMC引入了一些意外的等待时间,需要在内部缓冲比预期更多的数据,并且,由于我们没有足够的内部RAM在eMMC等待期间缓冲足够的数据(并且由于集成限制,无法在FMC上添加外部RAM,或在Quad SPI上添加nvSRAM,…),我们研究了

早上好

我们使用STM32H7同时采集3个ADC通道16位@5MSPS,并将数据存储在外部eMMC中。一切都有价值,如下所示: 3个从SPI,带3个DMA至内部触发器缓冲器;MDMA将数据交织到2个触发器eMMC缓冲器;SDMMC外围设备至eMMC的IDMA。 eMMC引入了一些意外的等待时间,需要在内部缓冲比预期更多的数据,并且,由于我们没有足够的内部RAM在eMMC等待期间缓冲足够的数据(并且由于集成限制,无法在FMC上添加外部RAM,或在Quad SPI上添加nvSRAM,…),我们研究了使用带有内部闪存的MDMA临时缓冲数据。 这是个坏主意吗?STM32H7上的闪存分为两个存储组,第一个存储组可用于程序内存(因此在DMA访问期间没有冲突和处理器停止),有2个AXI控制器,MDMA也是AXI外围设备…可能速度过慢?你们有谁试过这个吗

当我们阅读参考手册(第13章:MDMA控制器(MDMA))时:

主直接内存访问(MDMA)用于在内存和内存之间或外围设备和内存之间提供高速数据传输。MDMA无需任何CPU操作即可快速移动数据。这使CPU资源可用于其他操作

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

致以最良好的祝愿,
Clément

查看数据表,我认为内部闪存无法完成此任务


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

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