Hello,
I work on a project using the STM32F765. I want to convert a number of adc channels in a sequence, and use DMA2 to transfer the ADC-results into the memory. I didn't find an example in the STM32F7-pack that does exactly what I want, but I was sure that I did modify a similar example correctly. ADC seems to work correctly, DMA seems to fetch the adc-results from the data register, and I got the END OF Conversion irq at the end. But the data were not present at the expected memory area (located in SRAM1).
After many experiments I found a solution: Initially I did not add the DTCM (128kByte starting at 0x2000.0000) in my scatterfile because I wanted to preserve this memory for "critical" tasks. So my memory for DMA transfer was located in SRAM1. As soon as I use memory from DTCM for the DMA-Transfer, everything works as expected.
In the reference manual I read that DMA2 can access the complete memory and I do not find any restrictions (maybe I look at the wrong place..). Could anyone confirm that it is required to use DTCM-memory for peripheral-to-memory DMA transfers? Or does my test indicate that there is another problem in my code because SRAM1 should also work for this DMA transfer? If DTCM-Memory is required for periph=>memory DMA, does anyone know where this is documented?
Thank you.