我通常会把原厂的DEMO程序和芯片用户手册对比着读,比如在STM32Cube_FW_F4_V1.1.0这个软件包中,示例工程Examples\BSP中给出了SDRAM的初始化过程,在stm324x9i_eval_sdram.c中有函数BSP_SDRAM_Initialization_sequence,其中有代码如下:
/* Step 5: Program the external memory mode register */
tmpmrd = (uint32_t)SDRAM_MODEREG_BURST_LENGTH_1 |\
SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL |\
SDRAM_MODEREG_CAS_LATENCY_3 |\
SDRAM_MODEREG_OPERATING_MODE_STANDARD |\
SDRAM_MODEREG_WRITEBURST_MODE_SINGLE;
Command.CommandMode = FMC_SDRAM_CMD_LOAD_MODE;
Command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
Command.AutoRefreshNumber = 1;
Command.ModeRegisterDefinition = tmpmrd;
/* Send the command */
HAL_SDRAM_SendCommand(&sdramHandle, &Command, SDRAM_TIMEOUT);
注意第一行就有SDRAM_MODEREG_BURST_LENGTH_1,对应手册RM0090的1641页第37.7.3节:
|