Skip to main content
emann
Associate II
March 17, 2008
Question

DMA

  • March 17, 2008
  • 3 replies
  • 753 views
Posted on March 17, 2008 at 14:24

DMA

    This topic has been closed for replies.

    3 replies

    emann
    emannAuthor
    Associate II
    May 17, 2011
    Posted on May 17, 2011 at 12:26

    I am running code on the Keil STM32 Eval Board to do a parallel transfer from an SRAM array to GPIO-B (CPU=72MHz/APB2=72MHz/APB1=36MHz). The transfers are edge-triggered from TMR2. I can get the TMR2 output-compare to toggle a pin at 32MHz but the DMA port writes only run at 6.5MHz. Once the DMA is running the CPU is just idling ( while (1); ) and there is only one DMA process running.

    Why are my DMA transfers slow?

    Thanks for your help.

    [ This message was edited by: emann on 14-03-2008 15:09 ]

    gdp123a
    Associate III
    May 17, 2011
    Posted on May 17, 2011 at 12:26

    The ''while (1);'' is not really idling - it is equivalent to the CPU chasing its own tail at full speed. Try using the sleep command (WFI) and see if it is better. You can use the end of transfer interrupt (or systick) to wake the CPU up,

    Greg.

    emann
    emannAuthor
    Associate II
    May 17, 2011
    Posted on May 17, 2011 at 12:26

    Greg, thanks for the suggestion. It makes no difference to the DMA rate - not suprising I suppose as instruction fetches via the IBus do not influence the DMA process.

    However, I've learnt a lot more about my eval board, since adding a WFI disables the Jtag interface!