AnsweredAssumed Answered

std periph lib: FMC BusTurnAround is not configured for Write timing in Extended mode

Question asked by cnicnac on Oct 9, 2015
Latest reply on Oct 22, 2015 by 68516
* Description of the bug:
In file stm32f4xx_fmc.c (v1.5.1) (same bug in file stm32f4xx_fsmc.c), fonction FMC_NORSRAMInit():
Write timing configuration ,from line 243 to 264, doesn't take into account the BusTurnAroundDuration field of the WriteTimingStruct. Bits BUSTURN of FMC_BWTRx register are set to "0000" during the configuration. Therefore, the delay after a write operation is only 1 HCLK period.
Moreover, CLKDIV is not used iFMC_BWTRx register.

* Workaround:
1/ replace line 257: 
"((FMC_NORSRAMInitStruct->FMC_WriteTimingStruct->FMC_CLKDivision) << 20) |"
by
"(FMC_NORSRAMInitStruct->FMC_WriteTimingStruct->FMC_BusTurnAroundDuration << 16) |"

2/ replace line 249: 
"assert_param(IS_FMC_CLK_DIV(FMC_NORSRAMInitStruct->FMC_WriteTimingStruct->FMC_CLKDivision));"
by
"assert_param(IS_FMC_TURNAROUND_TIME(FMC_NORSRAMInitStruct->FMC_WriteTimingStruct->FMC_BusTurnAroundDuration));"

Outcomes