问题标签 [mdma]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1104 浏览

stm32 - STM32H7 上的 MDMA 和内部 FLASH R/W

早上好,

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

最好的问候,克莱门特

0 投票
1 回答
1006 浏览

stm32 - STM32H743 的 FMC 在 480MHz 的时钟频率下能否驱动比 1.6MHz 更快的 16 位 8080 总线?

我正在使用 STM32H743 的 FMC 来驱动 16 位 8080 总线 LCD 控制器。

我尝试使用 DMA、MDMA 和 CPU 循环通过 FMC 将数据传输到 8080 总线。

传输频率与使用 DMA、MDMA 还是 CPU 循环无关。这让我认为 DMA/MDMA/CPU 循环不是限制因素。

在 480MHz FMC 时钟下,传输频率仅为 1.6MHz,在 16 位彩色 320x240 LCD 上只有 20fps。

在 240MHz FMC 时钟下,传输仅以 0.8MHz 发生,以此类推。

我还尝试将各种设置和保持时间减少到 1 和 0 周期,但这(令人惊讶地)并没有影响 8080 总线上的波形。

我的(Cube-MX 生成)FMC 初始化代码是:

我修改后的设置是:

(Cube-MX 生成的)时钟设置为:

当使用 480MHz 时钟驱动时,如何使 STM32H743 上的 FMC 传输半字快于 1.6MHz?