2014-07-09 09:40 AM
I'm having some problems with DMA transfers apparently stalling on our STM32F405ZGT6 board.
The problem seems to only happen when I have multiple streams running. So, I have Stream3 using SDIO, with 32 bit wide access, and I am also driving an SPI peripheral using Stream 5 (mem to periph) and Stream 0. The problem I seeing is that occasionally either stream 5 or Stream 3 will fail to complete the transfer, leaving a non-zero value in NDTR. Any suggestions on what to look for when trying to figure this out? #stm32 #dma2014-07-10 04:20 AM
Do you use FIFO/memory bursts?
Is the value left in NDTR random? What is the value of respective flags in LISR/HISR at that moment? JW2014-07-10 11:15 PM
2014-07-11 12:54 AM
read also this
http://blog.frankvh.com/2012/01/13/stm32f2xx-stm32f4xx-dma-maximum-transactions/ and http://www.st.com/st-web-ui/static/active/en/resource/technical/document/errata_sheet/DM00037591.pdf2014-07-11 09:51 AM
2014-07-14 06:52 AM
2014-07-14 02:06 PM
It's looking like I've accidentally begun a new transaction on the DMA before the previous one has completed, and am therefore writing to some of the registers of the stream, due to a faulty state machine in my code.
2014-07-15 01:58 AM
A false alarm, then? :)
JW2014-07-15 07:34 AM
Yes, it was all my fault.
State machine advanced from an incorrect place, and the next dma transfer was set up before the next one. Still, maybe someone else who sees a transfer stop will find this, and see it was their fault too. Thanks for everyone's help,.