2022-01-11 08:52 AM
Hi everyone,
Some time ago I designed a board with an STM32F746 that captures images from a CMOS sensor (MT9P006) and transfers them via DCMI-DMA to an SDRAM (AS4C8M16SA), it works perfectly.
Currently due to the lack of availability of the STM32F746 i used a STM32H743 which is pin to pin compatible and has almost the same peripherals.
Using the STM32CubeMX I configured the STM32H743 in such a way that all internal/external peripherals works as STM32F746.
Debugging the STM32H743 program i find that CPU is unable to acquire a complete image, the acquisition stops with DCMI_FLAG_OVRRI flag set, after some transfer from DCMI to SDRAM.
I can't understand why this is happening, the only way to make the transfer work is to decrease the pixel acquisition frequency (DCMI_PIXCLK) from 56MHz to 33MHz,
this seems strange to me because CPU is not overloaded, since the only active peripherals besides DCMI, FMC and DMA are UART and I2C serial which are not active during the acquisition process,
also STM32H743 datasheet reports that "The maximum DCMI_PIXCLK period must be higher than 2.5 HCLK periods", I use HCLK = 200MHz -> 5nS -> 5nS * 2.5 = 12.5nS, DCMI_PIXCLK = 56MHz -> 17.8nS so 17.8 is > then 12.5!
Does anyone know how to help me understand the reason for this limitation?
(I am attaching the ioc files used to generate the sources of the 2 CPUs)
Best regards
2022-01-11 09:37 AM
https://community.st.com/s/question/0D53W000007zTjE/stm32h7-dcmi-to-sdram-with-dma-overrun-flag
2022-01-11 11:14 PM
thanks for the answer, i had already seen that discussion, unfortunately in my case this solution is not applicable because the image I have to acquire is larger than the available memory.