I am using an STM32F767ZIT6 on our own development board with an 8080-style OLED on the FMC bus.
Flash is used over TCM bus, memory layout here:
/* Instruction locations */
RAMITCM (xrw) : ORIGIN = 0x00000000, LENGTH = 16K
FLASHTCM (rx) : ORIGIN = 0x00200000, LENGTH = 2048K
/* Data locations */
DTCM_RAM_RW_ZI (rw) : ORIGIN = 0x20000000, LENGTH = 16K
SRAM1_RW_ZI (rw) : ORIGIN = 0x20020000, LENGTH = 368K
SRAM2_RW_ZI (rw) : ORIGIN = 0x2007C000, LENGTH = 16K
/* Stack/Heap locations */
DTCM_RAM_STACK : ORIGIN = 0x20004000, LENGTH = 16K
DTCM_RAM_HEAP : ORIGIN = 0x20008000, LENGTH = 96K
I write data to the interface after HAL initialization like this:
HAL_SRAM_WriteOperation_Enable( &hsram1 );
for(char i=0;i<128;i++) //clear all columns
if (HAL_SRAM_Write_8b(&hsram1, (uint32_t*)SSD1327_COMMAND, &Command, 1) != HAL_OK)
Everything works fine as long as I keep the ART accelerator disabled. As soon as I enable ART at startup, only 60% of the data is arriving, as verified with a logic analyzer.
What do I miss here, where should i start looking?
might be related to this unresolved issue here: STM32F767 FMC data over write?