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字节)。

  • 突发模式:FIFO到MEMORY的FIFO持续发送数据块。当发送突发时,AHB将仅占用。突发模式用于保存AHB的资源。它与65535数据大小限制无关。
  • 双缓冲区:如前所述,AHB仅在传输数据时占用。因此,当DMA不占用AHB时,处理器仍然可以从内存中获取数据。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top