I'm trying to set up an uDMA transfer between the ADC and a memory buffer. I am doing a processor triggered AD conversion in a 20 ms loop. One thing that I couldn't quite understand from reading the data sheet / driver library documentation, is if I need to manually enable the uDMA channel after each triggered conversion? I found some example code in this forum, and there it was not manually enabled each time. In this example code, a single transfer was used, but in the data sheet it clearly states that the AD converter doesn't support single transfers, only burst. Which is correct? (I am using a Cortex 4M-F processor, Stellaris LM4F232H5QD eval kit). Is it allowed to do a burst transfer of just one item? It says that the arbitration size must be a power of two, but 2^0 = 1 so..
The specific problems that I am experiencing is that it seems only a single uDMA transfer is completed. I have some init code where I set up the uDMA and ADC, and when I put a breakpoint in my 20 ms loop, I can see that it has transferred data to my buffer. But if I let it run a few more times, the data isn't updated. I also read data manually from the same sample sequence using ADCSequenceDataGet(), so I can tell that the actual values have changed. Could it be an issue, reading from the sample sequencer using both DMA and normal register access?
20ms loop code: http://susepaste.org/65432673
uDMA init code:http://susepaste.org/83245967
ADC init code: http://susepaste.org/97315411