STM32F4. Interrupt from DMA burst writing only once appears
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-09-04 6:30 AM
MCU is STM32F405. I write data array to output pins using DMA mem to peripheral (DM2 stream6 channel0). Trigger is TIM1 CC1 event. Also I use DMA2 stream5 channel6 for write to TIM1 registers. Trigger is TIM1 UEV event. So the writing and interrupt DMA_IT_TCIF5 appears ony once but TIM1_SR.UIF is set every time.
- Labels:
-
STM32F4 Series
-
TIM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-09-04 9:54 AM
Is there any question?
JW
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-09-04 12:23 PM
My question is why only once the interrupt appears? Update events occurs but no DMA burst writing and no interrupts generates.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-09-04 2:05 PM
Why do you think several interrupt should appear? Do you set DMA as circular? Is there any DMA transfer error indicated in the DMA status register?
JW
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-09-04 2:06 PM
Is the Stream 5 circular? TC will normally occur once per DMA transfer (could involve thousands of DMA requests), once the last work is delivered.
Check for error status from the DMA unit.
Up vote any posts that you find helpful, it shows what's working..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-09-04 2:17 PM
There aren't any errors at DMA unit. DMA is normal, but UEV occurs periodically. So I think TC will occur for every UEV. It's not true?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-09-04 4:30 PM
TC will only fire once all available data is consumed​. It can keep firing only if the DMA is in circular mode, reseting the buffer pointer/size at completion of entire buffer. This can be at a rate significantly decimated compared to the TIM triggered requests.
Up vote any posts that you find helpful, it shows what's working..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-09-05 12:54 AM
Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-09-05 12:55 AM
Thanks!
