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

如何解决STM32F407ZET6,DMA 的多个流是否可以并行运行?

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

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

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

enter image description here

解决方法

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?