How to use DMA to perform more than 65,536 transfers from DCMI to memory
Hello, we are creating a camera application on top of an STM32F7, using the DCMI peripheral. We have patterned our code after the BSP code, but when we tried to scale up from 250x250 to 400x400, we found that the DMA2->NDTR field is only 16 bits, and can only support 2^16 transfers, which isn't enough got 400x400 pixels (with 3 bytes per pixel) -- in our target memory, we were simply not writing past that.
How do we configure the DMA to perform more transfers?
Please note that we are using DMA (DMA2->PFCTRL=0) flow control rather than peripheral flow control... when I use peripheral flow control I get very weird output. There seems to be some coordination anyway since the DMA seems to get launched by the DCMI somehow (is it just when the DCMI data register (DR) changes?). My first thought was to handle the interrupt, change the target in memory to the next segment within the destination frame buffer, and re-start the DMA transfer, but the transfer seemed to still be in progress (DMA2.S1CR.EN=1) at that point, so setting it to 1 didn't seem like it would have an effect,
Then I turned to the geniuses here to ask for the capital-R right way to do it, rather than taking wild stabs.
Thanks for any insight.
