2012-11-16 05:37 AM
In the reference manual at paragraph 9.3.2 (pg 215) is described that the base address for the transfert is stored in DMA_SxPAR o DMA_SxM0AR register.
Then in paragraph 9.3.7 (pg 221) is described the possibility of automatically increment memory and peripheral pointer. The question is: How is done this pointer increment? The pointer increment is done incrementing the base address stored in DMA_SxPAR o DMA_SxM0AR or in different mode. In this case which is the register that is incremented when the pointer is incremented? Thanks Luca2012-11-16 06:20 AM
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; Which register increment, and by what. If the register level mechanics are critical review stm32f4xx_dma.c / .h2012-11-19 12:40 AM
Which reference manual are you talking about?
In both versions of ST32F4xx reference manual, RM0090, the DMA is described in chapter 8. The pointer incrementation is then described in chapter 8.3.7 (I don 't say it's concise nor exhaustive). JW2012-11-19 01:38 AM
If you go to the ST website and download the last reference manual (rev 3) you'll find that the DMA is described in chapter 9.
Thanks,2012-11-19 02:59 AM
Wow, wow, wow! Rev 3, how fast! :)
Oh, new devices? Hear, hear... Okay, so chapter 9 - as the rest of the manual, the description here is sloppy, too. If I remember correctly from what I found out by experimenting, the registers as they are exposed (visible from the processor) are incremented, except that there must be some shadow register which is used to reload the exposed registers when circular mode is engaged. JW