Circular DMA bursts
I use circular DMA with a buffer of size n (on a G431) to create bursts that are not necessarily equal to a multiple of n in size. This works fine, I start and stop a timer and end up somewhere in the DMA buffer array (say, at buffer[m] where 0<=m<n) from where I can resume.
Now I'd like to change direction: I want to perform DMA in the buffer BACKWARDS from m, say p steps, with p >> n, so that cycles are made (backwards) through the buffer.
I'm not aware that backwards DMA is supported by the hardware so I plan to use a second reverse buffer. So now I need to configure circular DMA on reverse_buffer, where the buffer goes from 0 to n but I want to start at position n-m, different from 0.
According to the reference circular DMA always reloads DMA_CNDTRx with the start value. It does not specify where this value comes from. Can I access a register to use a different value for the buffer address than the start pointer?
