Recently I've developed a graphical application on the STM32F746G discovery board. It displays gray-scale frames (400x400/8bpp/120Hz) from an image sensor.
Firstly it worked fine while the frame buffer was located in local SRAM, but it went wrong after switching the frame buffer to external SDRAM. The DCMI DMA FIFO errors always occurred, however it was still able to work at this time.
Then I changed the system clock from 216 MHz to 200 MHz to meet maximum SDRAM allowed speed (100 MHz). It went worse since The DCMI DMA transfer errors occurred and it stopped after about 1 second.
There is no problem if the LTDC was turned off, so that's why I think it is a SDRAM concurrent access issue between DCMI and LTDC.
I've read DCMI and LTDC related documents (AN5020 & AN4861) and tried to solve the issue by modifying their configurations, but still couldn't find a proper solution. Maybe possible workaround is to changed the SDRAM bus width from 16-bit to 32-bit, but output frames became stripped (I don't know why...).
My code is based on the HAL and BSP drivers in STM32Cube_FW_F7_V1.8.0 package which was modified only for custom sensor extension.
The frame data flow is like (Page 56 in AN5020)
Both DCMI and LTDC uses the same frame buffer.
Professional assistance is necessary for me...
Thanks in advance.