gpt4 book ai didi

c - STM32 DMA(并发流、FIFO、突发模式、双缓冲)

转载 作者:行者123 更新时间:2023-12-04 00:08:25 27 4
gpt4 key购买 nike

stm32F4 系列的 DMA 有一些高级功能,我可以在这里要求澄清吗?

  • 并发流:两个流可以同时传输数据吗?由于允许一字节传输。如果总线宽度为 32bit,则可以进行 4 个并发传输。顺便说一句,STM32的AHB总线的宽度是多少?
  • FIFO模式:如果不能并发传输,我想这里可以使用FIFO。 FIFO 将有助于等待从低速外设到 DMA 的数据准备就绪,而无需占用 AHB 总线。当一定数量的数据准备好时,这块数据会一起发送到内存中。我的理解正确吗?

  • Four-word depth 32 first-in, first-out memory buffers (FIFOs) per stream



    这意味着什么? FIFO 中可以存储多少数据? 4 还是 4*32?
  • 突发模式:突发模式究竟有什么作用?数据表上说可以传输65535个数据。 65535和burst模式有什么关系?
  • 双缓冲模式:

  • Double-buffer type transactions: double buffer transfers using two
    memory pointers for the memory (while the DMA is reading/writing
    from/to a buffer, the application can write/read to/from the other
    buffer). -----From reference manual of STM32F4



    我的问题是:在 DMA 传输期间,Cortex M4 无法使用 AHB 总线,应用程序如何从其他缓冲区读取?

    最佳答案

    在做了一些研究之后,这是我发现的,以防有人可能需要它。

  • 并发流:在一个 DMA 内不可能。可以同时运行 DMA1、DMA2。
    例如:
    F427可以同时做:
  • CPU 访问 Flash(读取代码)
  • DMA1 访问 SRAM(传输一些缓冲区)
  • DMA2 访问 SDRAM(另一个缓冲区)
  • FIFO 用于临时存储来自低速设备的数据。当数据积累到一定数量时,可以发送一个突发,以节省AHB的资源。因为当 AHB 被 DMAC 使用时,它不能被处理器使用。 FIFO 有 4*32 位大小。它可以配置为 16*8 位(16*0ne 字节)。
  • 突发模式:一块数据从 FIFO 连续发送到内存。 AHB 只会在发送突发时被占用。 Burst模式用于节省AHB的资源。它与 65535 数据大小限制无关。
  • 双缓冲区:如前所述,AHB 仅在数据传输时被占用。因此,当 DMA 不占用 AHB 时,处理器仍然可以从内存中获取数据。
  • 关于c - STM32 DMA(并发流、FIFO、突发模式、双缓冲),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24051720/

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