DMA对STM32 MCU上的GPIO有多可靠?

问题描述 投票:1回答:1

ST的一些应用笔记讨论了使用DMA到GPIO仿真并行总线。我对此表示赞赏,但它并未回答重要问题。我正在阅读参考手册,但似乎找不到澄清我所关心的事情。

我最担心抖动。该参考手册反复声明,当DMA被触发(例如,由定时器)时,DMA控制器将读取存储器并将该值传送到外围设备。拥有自己的FIFO的外设可能很好。在那里,当FIFO中有可用空间时,将触发DMA并填充FIFO。这可能会在FIFO空出之前发生。

但是对于GPIO,如果DMA通道本身没有FIFO,则在定时器触发时数据将无法准备好,需要从SRAM中获取数据。因此,在定时器触发与实际到达GPIO输出寄存器的值之间,可能要经过一段时间。查看计时器和GPIO引脚输出的时钟时,这可能是可测量的。 DMA控制器必须与正在运行的程序争夺对SRAM的访问权,因此程序进行的某些活动可能会增加抖动。

也许这对我来说是一个巨大的疏忽,但ST的参考手册似乎并未提及FIFO作为DMA的一部分。如果真是这样,将会导致抖动,并可能影响较高频率下的性能。

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

timer stm32 gpio dma stm32f4
1个回答
1
投票

DMA到GPIOit或从GPIOit到DMA仅是内存到内存的传输。许多STM32 uC都内置了DMA FIFO-但此处将不再使用。

内核始终优先于DMA,因此,如果有问题(极不可能),将内核可访问数据(当DMA在单独的存储区域中活动时,uC将访问的这些数据-例如CCM(如果您的uC有一个)

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

© www.soinside.com 2019 - 2024. All rights reserved.