gpt4 book ai didi

timer - STM32 MCU 上 DMA 到 GPIO 的可靠性如何?

转载 作者:行者123 更新时间:2023-12-03 19:16:08 27 4
gpt4 key购买 nike

ST 有一些应用笔记讨论使用 DMA 到 GPIO 模拟并行总线。我很感激,但它没有回答重要的问题。我正在浏览引用手册,但似乎无法澄清我所关心的事情。

我最关心的是抖动。引用手册反复指出,当 DMA 被触发时(例如,通过定时器),DMA Controller 将读取内存并将值传输到外设。对于具有自己的 FIFO 的外设,这可能没问题。在那里,当 FIFO 中有可用空间时,将触发 DMA 并填充 FIFO。这可能会在 FIFO 运行为空之前发生。

但是对于 GPIO,如果 DMA channel 本身没有 FIFO,那么当定时器触发时数据将不会准备好,需要从 SRAM 中获取。因此,在定时器触发和实际到达 GPIO 输出寄存器的值之间,可能会过去一些时间。当查看定时器和 GPIO 引脚的时钟输出时,这可能是可测量的。 DMA Controller 必须与正在运行的程序竞争对 SRAM 的访问,因此程序的某些事件可能会增加抖动。

也许这对我来说是一个巨大的疏忽,但 ST 的引用手册似乎没有提到 FIFO 作为 DMA 的一部分。如果是这种情况,则会导致抖动,这可能会影响更高频率下的性能。

我需要将 3 到 4 个引脚同步切换到 100kHz 到 1MHz 的时钟。我正在考虑 DMA 到 GPIO 并滥用 QuadSPI Controller 。我目前正在 STM32L4 上进行测试,但我也在考虑 STM32F4 甚至 F1。

最佳答案

与 GPIO 之间的 DMA 只是内存到内存的传输。许多 STM32 uC 内置了 DMA FIFO - 但它们不会在这里使用。

内核始终优先于 DMA,因此如果可能是问题(不太可能),请将内核可访问数据(当 DMA 处于事件状态时 uC 将访问的数据放在单独的内存区域中 - 例如 CCM(如果您的 uC 有一个)

回答问题
内存到/从 GPIO 非常可靠 - 我个人没有任何问题。

关于timer - STM32 MCU 上 DMA 到 GPIO 的可靠性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60537914/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com