Data is written to SDRAM at the correct address and at a wrong address with 32 byte offset simultaneously. What could be the reason for this?
Hello,
I have an STM32F746 in an own PCB design. A 128 Mb DRAM IS42S32400F is connected to the FMC pins, similar as on the STM32F746G-DISCO board. I can write and read data but there are errors which occur in a systematic way:
I start writing 16 bit data at address 0xC000 0000.
Data is stored at the the correct address. But, the strange thing is that the same data appears simultaneously at a second location either 32 byte above or below the intended address. How can this happen? How can data be stored at two locations with one write command?
A memory dump screenshot is attached.
I have double-checked all connections and fiddled with timing - but no success.
In my design I didn't care about matched trace lengths. Controller and SDRAM are about 4 cm apart. Could this be a reason?
I can also observe the same problem on an LCD sreen since the SDRAM is also my frame buffer.
The test loop is very simple:
while (1)
{
*(uint16_t*) (LCD_FB_START_ADDRESS + 2 + (2 * (y * 800 + x))) = x;
x++;
if (x == 800)
{
x = 0;
y++;
if (y == 480)
y = 0;
}
HAL_Delay(1);
}
I hope that anyone can give me a hint. I'm new in the STM32.
Regards
Jan
