pipiwau,
I am a bit confused by your approach to this problem. The way you describe your peripheral dseign and register map sounds fine, but in this arrangement it sounds like the circuit operates as follows:
- operands loaded (first reg)
- peripheral start (second reg)
- operatnds loaded (first reg)
- peripheral start (second reg)
Is this how it works?? The DMA is really designed to move a block of data, one word at a time, from place to place in memory. If you need to start the peripheral with the control register after each set of operands is loaded, the DMA is probably not the way to control this.
On the other hand, if you need to only enable the peripheral once:
- operands loaded (first reg)
- peripheral started (second reg)
- operands loaded
- operands loaded
...
...
...
Then in that case the DMA can be used, but you should use either the range_to_1 or 1_to_1 routines. The range_to_range routine will increment the address the DMA writes to after each transfer, and will thus run past your peripheral registers after the first operation.
Hope this helps.