STM32F407ZET6,DMA的多个流可以并行运行吗?

Posted

技术标签:

【中文标题】STM32F407ZET6,DMA的多个流可以并行运行吗?【英文标题】:STM32F407ZET6, Is it possible for Multiple streams of a DMA to run in Parallel? 【发布时间】:2021-08-19 10:52:36 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

每个流只能选择一个通道,但如果愿意,您可以一次启用每个 DMA 外设的所有 8 个流,但受勘误表中列出的硬件缺陷的限制*。

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

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

【讨论】:

以上是关于STM32F407ZET6,DMA的多个流可以并行运行吗?的主要内容,如果未能解决你的问题,请参考以下文章

stm32f407H库和stm32f103H库有区别吗

2019 8 8 STM32F407DAC DMA通道生成周期1msSIN波(1um一个点)相关配置

会stm32f429好学stm32f103吗

STM32F103(二十一)DMA(超详细的~)

STM32F103(二十一)DMA(超详细的~)

STM32F407VG 定时器