STM32 DMA(并发流,FIFO,突发模式,双缓冲区)
-
21-12-2019 - |
题
STM32F4系列的DMA有一些先进的功能,我可以在这里澄清吗?
-
并发流:可以同时发射数据吗?由于允许一个字节传输。如果总线宽度为32位,则可能需要4个并发传输。 BTW,STM32的AHB总线的宽度是多少?
-
fifo模式:如果无法进行并发传输,我猜可以在此处使用FIFO。 FIFO将有助于等待从低速外设到DMA的数据,而不占据AHB总线。当一定量的数据准备好时,将块的数据一起发送到存储器。是我的理解是否正确?
四字深32个首先,每条流式的第一输出存储缓冲器(FIFO)
这是什么意思?在FIFO中可以存储多少个数据? 4或4 * 32?
-
突发模式:实际突发模式做了什么?它在数据表中表示,可以传输65535数据。 65535与突发模式之间的关系是什么?
-
双缓冲模式:
双缓冲型事务:双缓冲器传输使用两个
内存的内存指针(而DMA正在读/写作
从/到缓冲区,应用程序可以写入/读取/从另一个/读取 缓冲)。 -----来自STM32F4的参考手册
我的问题是:在DMA传输期间,AHB总线不适用于Cortex M4,如何从其他缓冲区读取的应用程序?
解决方案
在做一些研究后,这里是我发现的,万一有人可能需要它。
-
并发流:在一个DMA内不可能。可以具有DMA1,DMA2并发运行。 例如: F427可以同时进行:
- CPU访问Flash(读取代码)
- DMA1访问SRAM(传输一些缓冲区) DMA2访问SDRAM(另一缓冲区)
FIFO用于暂时从低速设备存储数据。当累积一定量的数据时,可以发送突发,以保存AHB的资源。由于DMAC使用AHB,因此处理器不能使用它。 FIFO有4 * 32位大小。它可以配置为16 * 8位(16 * 0ne字节)。
不隶属于 StackOverflow