I am using a TM4C1294XL Launchpad board connected to a 12-bit serial D/A device (DAC124SO85) to generate 3-phase excitation signals for a small instrumentation motor. D/A data source comes from a memory buffer of several K-bytes built in groups of three 16-bit words, where each word contains the exact SSI data being sent to the D/A including the D/A channel number, update mode, and LUT data. I have it working using uDMA in basic mode transferring three 16-bit words at a time via a timer trigger. The problem is that the DMA interrupts the processor after every group of three words and I would rather not burden the processor this way. I am not seeing how to have the uDMA transfer only 3-words of data for every timer trigger, stop, and only interrupt after the complete buffer data is sent. In other words, I see only a buffer size for uDMA in burst mode, not a buffer size AND transfer count to move data from memory to a peripheral. Did I overlook something?
I need to move this over to a ping-pong approach, scatter-gather, or something else allowing me to interrupt the processor at a more reasonable rate. What is the best way to do this? Should set up three separate uDMA channels in single request mode? Can I modify the control table to transfer 3-words then stop? I can figure out the details is someone can point me in the best general direction as I do not have a lot of time to get this done. Any guidance would be greatly appreciated.