STM32F407ZET6,一个DMA的多个流是否可以并行运行?

STM32F407ZET6, Is it possible for Multiple streams of a DMA to run in Parallel?

您好,我正在使用 STM32F407ZET6 微控制器,我想使用多个 DMA1 流。是否可以触发同一 DMA 的两个不同流以将数据同时传输到两个不同的外设。 (与并行一样)。

在高级 AHB 总线矩阵中,我观察到每个 DMA 只有两条线,一根用于内存,一根用于外设,这对我来说意味着在任何时候最多两个流可能 运行并行并且如果 none 的流确实在进行 memory<->peripheral 传输。这个假设是否正确?而且,对于通过单个 DMA 并行的 运行 两个流,它们不应该进行 memory<->peripheral 传输,这是否也是正确的?我的意思是,从 AHB 矩阵的外观来看,如果只完成 Mem 到 Mem 和 Periph 到 Periph 的传输,那么可能两个流可以 运行 并行,但如果其中任何一个 memory<->peripheral 传输然后使用 DMA 内存和外设接口进行单个传输可能会使 NOT 成为可能。你能解释一下吗?

我想请求关于这个特定主题的一些指导,因为我找不到关于它的令人满意的信息...如果它依赖于总线带宽来并行传输流,那么带宽如何在多个之间分配单个总线执行多个传输的通道。...一些如果有任何这样的例子,我将不胜感激。作为参考,我将 AHB 矩阵放在下面:

每个流只能 select 一个通道,但如果愿意,您可以一次启用每个 DMA 外设的所有 8 个流,但要遵守勘误表 sheet* 中列出的硬件缺陷。

每个master轮流访问总线。一旦主人乘坐公共汽车,它就会决定使用多长时间。对于 DMA 主机,这是使用 DMA_SxCR 寄存器的 MBURST 和 PBURST 位配置的。如果您在系统中需要非常低的延迟并且不希望处理器或另一个主设备(以太网等)停止并且必须等待 DMA 从总线上下来然后设置突发配置短(但即使是最长的突发你可以配置仍然只有一微秒左右)。

(*) DMA2 中存在硬件缺陷,不允许同时使用 AHB 和 APB 外围设备,详情请参阅 the errata