Timer -> DMA -> SPI
- 12 replies
- 9094 views
Hi,
I am having trouble getting the Timer to trigger a DMA -> SPI operation. Namely, I want to set the timer up to run,. Then, get every overflow event to trigger the DMA to move a byte into the SPI. The SPI should auto-send. Then, the cycle repeats until the DMA has moved a N-bytes.
I am feeling really blind, because I cannot figure out the problem. At first, I was trying to find the right setting to get the Timer to trigger a DMA request upon UEV generation. However, I could not find such a feature. So instead, I setup DMA1 Channel 3. TIM6 should map to this DMA. Then I setup TIM6 to generate a UEV upon Overflow (URS = 1, UDIS = 0). Finally, I setup TIM6 to generate a DMA request upon update (UDE = 1).
Still nothing.
Can I get some input?



--------------------------------------------------------------------------------------------------------------------------
What I am trying to do may not be possible in the way that I thought.
Would the DMA rapid fire send N-bytes to the SPI upon the first successful DMA request? Is there a way to get it to send only 1 byte at a time, triggered by the timer?
--------------------------------------------------------------------------------------------------------------------------
And auto-increment through memory? So..
- Timer6 -> Overflow -> UEV -> DMA -> Byte 0 -> SPI
- Timer6 -> Overflow -> UEV -> DMA -> Byte 1 -> SPI
- Timer6 -> Overflow -> UEV -> DMA -> Byte 2 -> SPI
- ...
- Timer6 -> Overflow -> UEV -> DMA -> Byte N -> SPI
