AnsweredAssumed Answered

STM32F4x9 FMC Speed Issues

Question asked by Madera.Ricardo on Dec 8, 2016
Latest reply on Dec 9, 2016 by shingadaddy

So I finally got my IL9325 TFT display running via FMC but it is running much slower than I expected. The SPI based displays on arduinos seem to be performing better than this parallel setup. I measured my data pulse width to be around 20us. Is this the limit of the FMC(settings below)? I am running my clock at 168Mhz, HSE=24Mhz M = 12, N = 168 , P = 2, Q = 7, AHB =1, APB1 = 4, APB2 = 2.  If the FMC should be running faster, what should I be looking into? 

 

 

FMC_NORSRAMTimingInitStructure.FMC_AddressSetupTime = 15; /* Address Setup Time */
FMC_NORSRAMTimingInitStructure.FMC_AddressHoldTime = 0;
FMC_NORSRAMTimingInitStructure.FMC_DataSetupTime = 15; /* Data Setup Time */
FMC_NORSRAMTimingInitStructure.FMC_BusTurnAroundDuration = 0;
FMC_NORSRAMTimingInitStructure.FMC_CLKDivision = 0;
FMC_NORSRAMTimingInitStructure.FMC_DataLatency = 0;
FMC_NORSRAMTimingInitStructure.FMC_AccessMode = FMC_AccessMode_A; /* FSMC Access Mode */
FMC_NORSRAMInitStructure.FMC_Bank = FMC_Bank1_NORSRAM4;
FMC_NORSRAMInitStructure.FMC_DataAddressMux = FMC_DataAddressMux_Disable;
FMC_NORSRAMInitStructure.FMC_MemoryType = FMC_MemoryType_SRAM;
FMC_NORSRAMInitStructure.FMC_MemoryDataWidth = FMC_NORSRAM_MemoryDataWidth_16b;
FMC_NORSRAMInitStructure.FMC_BurstAccessMode = FMC_BurstAccessMode_Disable;
FMC_NORSRAMInitStructure.FMC_WaitSignalPolarity = FMC_WaitSignalPolarity_Low;
FMC_NORSRAMInitStructure.FMC_WrapMode = FMC_WrapMode_Disable;
FMC_NORSRAMInitStructure.FMC_WaitSignalActive = FMC_WaitSignalActive_BeforeWaitState;
FMC_NORSRAMInitStructure.FMC_WriteOperation = FMC_WriteOperation_Enable;
FMC_NORSRAMInitStructure.FMC_WaitSignal = FMC_WaitSignal_Disable;
FMC_NORSRAMInitStructure.FMC_AsynchronousWait = FMC_AsynchronousWait_Disable;
FMC_NORSRAMInitStructure.FMC_ExtendedMode = FMC_ExtendedMode_Disable;
FMC_NORSRAMInitStructure.FMC_WriteBurst = FMC_WriteBurst_Disable;
FMC_NORSRAMInitStructure.FMC_ReadWriteTimingStruct = &FMC_NORSRAMTimingInitStructure;
FMC_NORSRAMInit(&FMC_NORSRAMInitStructure);
/* FSMC Write Timing */
FMC_NORSRAMTimingInitStructure.FMC_AddressSetupTime = 5;//2;//1; /* Address Setup Time */
FMC_NORSRAMTimingInitStructure.FMC_AddressHoldTime = 0;
FMC_NORSRAMTimingInitStructure.FMC_DataSetupTime = 5;//2;//1; /* Data Setup Time */
FMC_NORSRAMTimingInitStructure.FMC_BusTurnAroundDuration = 0x00;
FMC_NORSRAMTimingInitStructure.FMC_CLKDivision = 0;
FMC_NORSRAMTimingInitStructure.FMC_DataLatency = 0x00;
FMC_NORSRAMTimingInitStructure.FMC_AccessMode = FMC_AccessMode_A; /* FSMC Access Mode */
FMC_NORSRAMInitStructure.FMC_WriteTimingStruct = &FMC_NORSRAMTimingInitStructure;
FMC_NORSRAMInit(&FMC_NORSRAMInitStructure);

Outcomes