19 .sdcr = (uint32_t) (FMC_ColumnBits_Number_8b |
20 FMC_RowBits_Number_12b |
21 FMC_SDMemory_Width_16b |
22 FMC_InternalBank_Number_4 |
24 FMC_Write_Protection_Disable |
25 FMC_SDClock_Period_2 |
26 FMC_Read_Burst_Disable |
27 FMC_ReadPipe_Delay_1),
29 .sdtr = (uint32_t)( (2 - 1) |
37 .sdcmr = (uint32_t)(((4 - 1) << 5) |
38 ((FMC_SDCMR_MRD_BURST_LENGTH_2 |
39 FMC_SDCMR_MRD_BURST_TYPE_SEQUENTIAL |
40 FMC_SDCMR_MRD_CAS_LATENCY_3 |
41 FMC_SDCMR_MRD_OPERATING_MODE_STANDARD |
42 FMC_SDCMR_MRD_WRITEBURST_MODE_SINGLE) << 9)),
48 .sdrtr = (uint32_t)(683 << 1),
120 {VAL_GPIOA_MODER, VAL_GPIOA_OTYPER, VAL_GPIOA_OSPEEDR, VAL_GPIOA_PUPDR,
121 VAL_GPIOA_ODR, VAL_GPIOA_AFRL, VAL_GPIOA_AFRH},
124 {VAL_GPIOB_MODER, VAL_GPIOB_OTYPER, VAL_GPIOB_OSPEEDR, VAL_GPIOB_PUPDR,
125 VAL_GPIOB_ODR, VAL_GPIOB_AFRL, VAL_GPIOB_AFRH},
128 {VAL_GPIOC_MODER, VAL_GPIOC_OTYPER, VAL_GPIOC_OSPEEDR, VAL_GPIOC_PUPDR,
129 VAL_GPIOC_ODR, VAL_GPIOC_AFRL, VAL_GPIOC_AFRH},
132 {VAL_GPIOD_MODER, VAL_GPIOD_OTYPER, VAL_GPIOD_OSPEEDR, VAL_GPIOD_PUPDR,
133 VAL_GPIOD_ODR, VAL_GPIOD_AFRL, VAL_GPIOD_AFRH},
136 {VAL_GPIOE_MODER, VAL_GPIOE_OTYPER, VAL_GPIOE_OSPEEDR, VAL_GPIOE_PUPDR,
137 VAL_GPIOE_ODR, VAL_GPIOE_AFRL, VAL_GPIOE_AFRH},
140 {VAL_GPIOF_MODER, VAL_GPIOF_OTYPER, VAL_GPIOF_OSPEEDR, VAL_GPIOF_PUPDR,
141 VAL_GPIOF_ODR, VAL_GPIOF_AFRL, VAL_GPIOF_AFRH},
144 {VAL_GPIOG_MODER, VAL_GPIOG_OTYPER, VAL_GPIOG_OSPEEDR, VAL_GPIOG_PUPDR,
145 VAL_GPIOG_ODR, VAL_GPIOG_AFRL, VAL_GPIOG_AFRH},
148 {VAL_GPIOH_MODER, VAL_GPIOH_OTYPER, VAL_GPIOH_OSPEEDR, VAL_GPIOH_PUPDR,
149 VAL_GPIOH_ODR, VAL_GPIOH_AFRL, VAL_GPIOH_AFRH},
152 {VAL_GPIOI_MODER, VAL_GPIOI_OTYPER, VAL_GPIOI_OSPEEDR, VAL_GPIOI_PUPDR,
153 VAL_GPIOI_ODR, VAL_GPIOI_AFRL, VAL_GPIOI_AFRH},
156 {VAL_GPIOJ_MODER, VAL_GPIOJ_OTYPER, VAL_GPIOJ_OSPEEDR, VAL_GPIOJ_PUPDR,
157 VAL_GPIOJ_ODR, VAL_GPIOJ_AFRL, VAL_GPIOJ_AFRH},
160 {VAL_GPIOK_MODER, VAL_GPIOK_OTYPER, VAL_GPIOK_OSPEEDR, VAL_GPIOK_PUPDR,
161 VAL_GPIOK_ODR, VAL_GPIOK_AFRL, VAL_GPIOK_AFRH}
261 uint32_t command_target = 0;
266 rccEnableFSMC(FALSE);
268 SDRAM->SDCR1 =
config->sdcr;
269 SDRAM->SDTR1 =
config->sdtr;
270 SDRAM->SDCR2 =
config->sdcr;
271 SDRAM->SDTR2 =
config->sdtr;
273#if STM32_SDRAM_USE_SDRAM1
274 command_target |= FMC_SDCMR_CTB1;
276#if STM32_SDRAM_USE_SDRAM2
277 command_target |= FMC_SDCMR_CTB2;
282 SDRAM->SDCMR = FMCCM_CLK_ENABLED | command_target;
289 SDRAM->SDCMR = FMCCM_PALL | command_target;
293 SDRAM->SDCMR = FMCCM_AUTO_REFRESH | command_target |
294 (
config->sdcmr & FMC_SDCMR_NRFS);
298 SDRAM->SDCMR = FMCCM_AUTO_REFRESH | command_target |
299 (
config->sdcmr & FMC_SDCMR_NRFS);
303 SDRAM->SDCMR = FMCCM_LOAD_MODE | command_target |
304 (
config->sdcmr & FMC_SDCMR_MRD);
308 SDRAM->SDRTR =
config->sdrtr & FMC_SDRTR_COUNT;