AnsweredAssumed Answered

Kinetis K24 eDMA major loop limitation

Question asked by Mike Thomas on Nov 30, 2015
Latest reply on Dec 28, 2015 by Earl Orlando Ramirez Sanchez

I have a 16 bit peripheral that I need to stream 180k bytes to. (90k 16 bit words).

The data stream needs to be strobed into the peripheral with a 5MHz clock.

The stream needs to be clocked precisely every 200nS.

 

My dilemma is that since the stream must be precisely controlled (1 xfer per strobe) , I need to set the minor loop count for 1 xfer,

and the major loop for 90k 16 bit transfers. But the maximum limit for a major loop count is either 32678 with no channel linking

or 512 with channel linking.

 

If I go with the maximum non linked major loop count and have the eDMA generate an interrupt on completion, I cannot guarantee the ISR will setup the eDMA

and re-start it within 200nS, as this ISR will likely have a lower priority than another critical task. I really don't want to have the CPU intervene in these transfers anyway if I can help it.

 

The only solution I can come up with is; set up 3 DMA channels to transfer 30k words each, each channel starting from where another channel left off,  then somehow (maybe by some external gating circuit or using the timers) use the 5MHz strobe and FTM timers to sequentially request 30k xfers on channels 1, 2 then 3. After channel 3 exhausts its 30k major loop count, an interrupt would be generated.

 

Is there any other way to transfer 180k bytes with precisely controlled requests without CPU intervention using this eDMA module?

 

Thanks in advance,

Mike

Outcomes