stm32/sdram: Allow additional config by a board, and tune MPU settings.
- Allow configuration by a board of autorefresh number and burst length. - Increase MPU region size to 8MiB. - Make SDRAM region cacheable and executable.
This commit is contained in:
parent
b18fa1e606
commit
e562f99263
@ -180,14 +180,14 @@ static void sdram_init_seq(SDRAM_HandleTypeDef
|
||||
/* Step 6 : Configure a Auto-Refresh command */
|
||||
command->CommandMode = FMC_SDRAM_CMD_AUTOREFRESH_MODE;
|
||||
command->CommandTarget = FMC_SDRAM_CMD_TARGET_BANK;
|
||||
command->AutoRefreshNumber = 4;
|
||||
command->AutoRefreshNumber = MICROPY_HW_SDRAM_AUTOREFRESH_NUM;
|
||||
command->ModeRegisterDefinition = 0;
|
||||
|
||||
/* Send the command */
|
||||
HAL_SDRAM_SendCommand(hsdram, command, 0x1000);
|
||||
|
||||
/* Step 7: Program the external memory mode register */
|
||||
tmpmrd = (uint32_t)SDRAM_MODEREG_BURST_LENGTH_2 |
|
||||
tmpmrd = (uint32_t)FMC_INIT(SDRAM_MODEREG_BURST_LENGTH, MICROPY_HW_SDRAM_BURST_LENGTH) |
|
||||
SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL |
|
||||
FMC_INIT(SDRAM_MODEREG_CAS_LATENCY, MICROPY_HW_SDRAM_CAS_LATENCY) |
|
||||
SDRAM_MODEREG_OPERATING_MODE_STANDARD |
|
||||
@ -222,19 +222,18 @@ static void sdram_init_seq(SDRAM_HandleTypeDef
|
||||
/* Disable the MPU */
|
||||
HAL_MPU_Disable();
|
||||
|
||||
/* Configure the MPU attributes for SDRAM */
|
||||
/* Configure the MPU attributes as Write-Through for External SDRAM */
|
||||
MPU_InitStruct.Enable = MPU_REGION_ENABLE;
|
||||
MPU_InitStruct.BaseAddress = SDRAM_START_ADDRESS;
|
||||
MPU_InitStruct.Size = MPU_REGION_SIZE_4MB;
|
||||
MPU_InitStruct.Size = MPU_REGION_SIZE_8MB;
|
||||
MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
|
||||
MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
|
||||
MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
|
||||
MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;
|
||||
MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
|
||||
MPU_InitStruct.Number = MPU_REGION_NUMBER0;
|
||||
MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1;
|
||||
MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
|
||||
MPU_InitStruct.SubRegionDisable = 0x00;
|
||||
MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;
|
||||
|
||||
MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
|
||||
HAL_MPU_ConfigRegion(&MPU_InitStruct);
|
||||
|
||||
/* Enable the MPU */
|
||||
|
Loading…
x
Reference in New Issue
Block a user