64#if defined(HAL_NOR_MODULE_ENABLED) || (defined(HAL_NAND_MODULE_ENABLED)) || defined(HAL_PCCARD_MODULE_ENABLED) || defined(HAL_SDRAM_MODULE_ENABLED)\
65 || defined(HAL_SRAM_MODULE_ENABLED)
87#define BTR_CLEAR_MASK ((uint32_t)(FMC_BTR1_ADDSET | FMC_BTR1_ADDHLD |\
88 FMC_BTR1_DATAST | FMC_BTR1_BUSTURN |\
89 FMC_BTR1_CLKDIV | FMC_BTR1_DATLAT |\
94#define BWTR_CLEAR_MASK ((uint32_t)(FMC_BWTR1_ADDSET | FMC_BWTR1_ADDHLD |\
95 FMC_BWTR1_DATAST | FMC_BWTR1_BUSTURN |\
98#if defined(FMC_Bank3) || defined(FMC_Bank2_3)
100#if defined (FMC_PCR_PWAITEN)
103#define PCR_CLEAR_MASK ((uint32_t)(FMC_PCR_PWAITEN | FMC_PCR_PBKEN | \
104 FMC_PCR_PTYP | FMC_PCR_PWID | \
105 FMC_PCR_ECCEN | FMC_PCR_TCLR | \
106 FMC_PCR_TAR | FMC_PCR_ECCPS))
109#define PMEM_CLEAR_MASK ((uint32_t)(FMC_PMEM_MEMSET2 | FMC_PMEM_MEMWAIT2 |\
110 FMC_PMEM_MEMHOLD2 | FMC_PMEM_MEMHIZ2))
114#define PATT_CLEAR_MASK ((uint32_t)(FMC_PATT_ATTSET2 | FMC_PATT_ATTWAIT2 |\
115 FMC_PATT_ATTHOLD2 | FMC_PATT_ATTHIZ2))
119#define PCR_CLEAR_MASK ((uint32_t)(FMC_PCR2_PWAITEN | FMC_PCR2_PBKEN | \
120 FMC_PCR2_PTYP | FMC_PCR2_PWID | \
121 FMC_PCR2_ECCEN | FMC_PCR2_TCLR | \
122 FMC_PCR2_TAR | FMC_PCR2_ECCPS))
125#define PMEM_CLEAR_MASK ((uint32_t)(FMC_PMEM2_MEMSET2 | FMC_PMEM2_MEMWAIT2 |\
126 FMC_PMEM2_MEMHOLD2 | FMC_PMEM2_MEMHIZ2))
130#define PATT_CLEAR_MASK ((uint32_t)(FMC_PATT2_ATTSET2 | FMC_PATT2_ATTWAIT2 |\
131 FMC_PATT2_ATTHOLD2 | FMC_PATT2_ATTHIZ2))
135#if defined(FMC_Bank4)
138#define PCR4_CLEAR_MASK ((uint32_t)(FMC_PCR4_PWAITEN | FMC_PCR4_PBKEN | \
139 FMC_PCR4_PTYP | FMC_PCR4_PWID | \
140 FMC_PCR4_ECCEN | FMC_PCR4_TCLR | \
141 FMC_PCR4_TAR | FMC_PCR4_ECCPS))
144#define PMEM4_CLEAR_MASK ((uint32_t)(FMC_PMEM4_MEMSET4 | FMC_PMEM4_MEMWAIT4 |\
145 FMC_PMEM4_MEMHOLD4 | FMC_PMEM4_MEMHIZ4))
149#define PATT4_CLEAR_MASK ((uint32_t)(FMC_PATT4_ATTSET4 | FMC_PATT4_ATTWAIT4 |\
150 FMC_PATT4_ATTHOLD4 | FMC_PATT4_ATTHIZ4))
154#define PIO4_CLEAR_MASK ((uint32_t)(FMC_PIO4_IOSET4 | FMC_PIO4_IOWAIT4 | \
155 FMC_PIO4_IOHOLD4 | FMC_PIO4_IOHIZ4))
158#if defined(FMC_Bank5_6)
162#define SDCR_CLEAR_MASK ((uint32_t)(FMC_SDCR1_NC | FMC_SDCR1_NR | \
163 FMC_SDCR1_MWID | FMC_SDCR1_NB | \
164 FMC_SDCR1_CAS | FMC_SDCR1_WP | \
165 FMC_SDCR1_SDCLK | FMC_SDCR1_RBURST | \
170#define SDTR_CLEAR_MASK ((uint32_t)(FMC_SDTR1_TMRD | FMC_SDTR1_TXSR | \
171 FMC_SDTR1_TRAS | FMC_SDTR1_TRC | \
172 FMC_SDTR1_TWR | FMC_SDTR1_TRP | \
189#if defined(FMC_Bank1)
242 uint32_t flashaccess;
251 assert_param(IS_FMC_NORSRAM_MEMORY_WIDTH(Init->MemoryDataWidth));
253 assert_param(IS_FMC_WAIT_POLARITY(Init->WaitSignalPolarity));
254#if defined(FMC_BCR1_WRAPMOD)
257 assert_param(IS_FMC_WAIT_SIGNAL_ACTIVE(Init->WaitSignalActive));
258 assert_param(IS_FMC_WRITE_OPERATION(Init->WriteOperation));
263#if defined(FMC_BCR1_CCLKEN)
264 assert_param(IS_FMC_CONTINOUS_CLOCK(Init->ContinuousClock));
266#if defined(FMC_BCR1_WFDIS)
275 if (Init->MemoryType == FMC_MEMORY_TYPE_NOR)
277 flashaccess = FMC_NORSRAM_FLASH_ACCESS_ENABLE;
281 flashaccess = FMC_NORSRAM_FLASH_ACCESS_DISABLE;
284 btcr_reg = (flashaccess | \
285 Init->DataAddressMux | \
287 Init->MemoryDataWidth | \
288 Init->BurstAccessMode | \
289 Init->WaitSignalPolarity | \
290 Init->WaitSignalActive | \
291 Init->WriteOperation | \
293 Init->ExtendedMode | \
294 Init->AsynchronousWait | \
297#if defined(FMC_BCR1_WRAPMOD)
298 btcr_reg |= Init->WrapMode;
300#if defined(FMC_BCR1_CCLKEN)
301 btcr_reg |= Init->ContinuousClock;
303#if defined(FMC_BCR1_WFDIS)
304 btcr_reg |= Init->WriteFifo;
306 btcr_reg |= Init->PageSize;
308 mask = (FMC_BCR1_MBKEN |
322#if defined(FMC_BCR1_WRAPMOD)
323 mask |= FMC_BCR1_WRAPMOD;
325#if defined(FMC_BCR1_CCLKEN)
326 mask |= FMC_BCR1_CCLKEN;
328#if defined(FMC_BCR1_WFDIS)
329 mask |= FMC_BCR1_WFDIS;
331 mask |= FMC_BCR1_CPSIZE;
333 MODIFY_REG(Device->BTCR[Init->NSBank], mask, btcr_reg);
335#if defined(FMC_BCR1_CCLKEN)
337 if ((Init->ContinuousClock == FMC_CONTINUOUS_CLOCK_SYNC_ASYNC) && (Init->NSBank !=
FMC_NORSRAM_BANK1))
339 MODIFY_REG(Device->BTCR[
FMC_NORSRAM_BANK1], FMC_BCR1_CCLKEN, Init->ContinuousClock);
342#if defined(FMC_BCR1_WFDIS)
376 Device->BTCR[Bank] = 0x000030DBU;
381 Device->BTCR[Bank] = 0x000030D2U;
384 Device->BTCR[Bank + 1U] = 0x0FFFFFFFU;
385 ExDevice->BWTR[Bank] = 0x0FFFFFFFU;
401#if defined(FMC_BCR1_CCLKEN)
407 assert_param(IS_FMC_ADDRESS_SETUP_TIME(Timing->AddressSetupTime));
408 assert_param(IS_FMC_ADDRESS_HOLD_TIME(Timing->AddressHoldTime));
409 assert_param(IS_FMC_DATASETUP_TIME(Timing->DataSetupTime));
410 assert_param(IS_FMC_TURNAROUND_TIME(Timing->BusTurnAroundDuration));
417 Device->BTCR[Bank + 1U] =
418 (Timing->AddressSetupTime << FMC_BTR1_ADDSET_Pos) |
419 (Timing->AddressHoldTime << FMC_BTR1_ADDHLD_Pos) |
420 (Timing->DataSetupTime << FMC_BTR1_DATAST_Pos) |
421 (Timing->BusTurnAroundDuration << FMC_BTR1_BUSTURN_Pos) |
422 ((Timing->CLKDivision - 1U) << FMC_BTR1_CLKDIV_Pos) |
423 ((Timing->DataLatency - 2U) << FMC_BTR1_DATLAT_Pos) |
426#if defined(FMC_BCR1_CCLKEN)
430 tmpr = (uint32_t)(Device->BTCR[
FMC_NORSRAM_BANK1 + 1U] & ~((0x0FU) << FMC_BTR1_CLKDIV_Pos));
431 tmpr |= (uint32_t)(((Timing->CLKDivision) - 1U) << FMC_BTR1_CLKDIV_Pos);
453 uint32_t ExtendedMode)
459 if (ExtendedMode == FMC_EXTENDED_MODE_ENABLE)
463 assert_param(IS_FMC_ADDRESS_SETUP_TIME(Timing->AddressSetupTime));
464 assert_param(IS_FMC_ADDRESS_HOLD_TIME(Timing->AddressHoldTime));
465 assert_param(IS_FMC_DATASETUP_TIME(Timing->DataSetupTime));
466 assert_param(IS_FMC_TURNAROUND_TIME(Timing->BusTurnAroundDuration));
471 MODIFY_REG(Device->BWTR[Bank], BWTR_CLEAR_MASK, (Timing->AddressSetupTime |
472 ((Timing->AddressHoldTime) << FMC_BWTR1_ADDHLD_Pos) |
473 ((Timing->DataSetupTime) << FMC_BWTR1_DATAST_Pos) |
475 ((Timing->BusTurnAroundDuration) << FMC_BWTR1_BUSTURN_Pos)));
479 Device->BWTR[Bank] = 0x0FFFFFFFU;
548#if defined(FMC_Bank3) || defined(FMC_Bank2_3)
605 assert_param(IS_FMC_NAND_MEMORY_WIDTH(Init->MemoryDataWidth));
611#if defined(FMC_Bank2_3)
613 if (Init->NandBank == FMC_NAND_BANK2)
616 MODIFY_REG(Device->PCR2, PCR_CLEAR_MASK, (Init->Waitfeature |
617 FMC_PCR_MEMORY_TYPE_NAND |
618 Init->MemoryDataWidth |
619 Init->EccComputation |
621 ((Init->TCLRSetupTime) << FMC_PCR2_TCLR_Pos) |
622 ((Init->TARSetupTime) << FMC_PCR2_TAR_Pos)));
627 MODIFY_REG(Device->PCR3, PCR_CLEAR_MASK, (Init->Waitfeature |
628 FMC_PCR_MEMORY_TYPE_NAND |
629 Init->MemoryDataWidth |
630 Init->EccComputation |
632 ((Init->TCLRSetupTime) << FMC_PCR2_TCLR_Pos) |
633 ((Init->TARSetupTime) << FMC_PCR2_TAR_Pos)));
637 MODIFY_REG(Device->PCR, PCR_CLEAR_MASK, (Init->Waitfeature |
638 FMC_PCR_MEMORY_TYPE_NAND |
639 Init->MemoryDataWidth |
640 Init->EccComputation |
642 ((Init->TCLRSetupTime) << FMC_PCR_TCLR_Pos) |
643 ((Init->TARSetupTime) << FMC_PCR_TAR_Pos)));
658 const FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank)
668#if defined(FMC_Bank2_3)
670 if (Bank == FMC_NAND_BANK2)
673 WRITE_REG(Device->PMEM2, (Timing->SetupTime |
674 ((Timing->WaitSetupTime) << FMC_PMEM2_MEMWAIT2_Pos) |
675 ((Timing->HoldSetupTime) << FMC_PMEM2_MEMHOLD2_Pos) |
676 ((Timing->HiZSetupTime) << FMC_PMEM2_MEMHIZ2_Pos)));
681 WRITE_REG(Device->PMEM3, (Timing->SetupTime |
682 ((Timing->WaitSetupTime) << FMC_PMEM2_MEMWAIT2_Pos) |
683 ((Timing->HoldSetupTime) << FMC_PMEM2_MEMHOLD2_Pos) |
684 ((Timing->HiZSetupTime) << FMC_PMEM2_MEMHIZ2_Pos)));
691 Device->PMEM = (Timing->SetupTime |
692 ((Timing->WaitSetupTime) << FMC_PMEM_MEMWAIT2_Pos) |
693 ((Timing->HoldSetupTime) << FMC_PMEM_MEMHOLD2_Pos) |
694 ((Timing->HiZSetupTime) << FMC_PMEM_MEMHIZ2_Pos));
709 const FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank)
719#if defined(FMC_Bank2_3)
721 if (Bank == FMC_NAND_BANK2)
724 WRITE_REG(Device->PATT2, (Timing->SetupTime |
725 ((Timing->WaitSetupTime) << FMC_PATT2_ATTWAIT2_Pos) |
726 ((Timing->HoldSetupTime) << FMC_PATT2_ATTHOLD2_Pos) |
727 ((Timing->HiZSetupTime) << FMC_PATT2_ATTHIZ2_Pos)));
732 WRITE_REG(Device->PATT3, (Timing->SetupTime |
733 ((Timing->WaitSetupTime) << FMC_PATT2_ATTWAIT2_Pos) |
734 ((Timing->HoldSetupTime) << FMC_PATT2_ATTHOLD2_Pos) |
735 ((Timing->HiZSetupTime) << FMC_PATT2_ATTHIZ2_Pos)));
742 Device->PATT = (Timing->SetupTime |
743 ((Timing->WaitSetupTime) << FMC_PATT_ATTWAIT2_Pos) |
744 ((Timing->HoldSetupTime) << FMC_PATT_ATTHOLD2_Pos) |
745 ((Timing->HiZSetupTime) << FMC_PATT_ATTHIZ2_Pos));
764 __FMC_NAND_DISABLE(Device, Bank);
767#if defined(FMC_Bank2_3)
768 if (Bank == FMC_NAND_BANK2)
771 WRITE_REG(Device->PCR2, 0x00000018U);
772 WRITE_REG(Device->SR2, 0x00000040U);
773 WRITE_REG(Device->PMEM2, 0xFCFCFCFCU);
774 WRITE_REG(Device->PATT2, 0xFCFCFCFCU);
780 WRITE_REG(Device->PCR3, 0x00000018U);
781 WRITE_REG(Device->SR3, 0x00000040U);
782 WRITE_REG(Device->PMEM3, 0xFCFCFCFCU);
783 WRITE_REG(Device->PATT3, 0xFCFCFCFCU);
790 WRITE_REG(Device->PCR, 0x00000018U);
791 WRITE_REG(Device->SR, 0x00000040U);
792 WRITE_REG(Device->PMEM, 0xFCFCFCFCU);
793 WRITE_REG(Device->PATT, 0xFCFCFCFCU);
832#if defined(FMC_Bank2_3)
833 if (Bank == FMC_NAND_BANK2)
835 SET_BIT(Device->PCR2, FMC_PCR2_ECCEN);
839 SET_BIT(Device->PCR3, FMC_PCR2_ECCEN);
845 SET_BIT(Device->PCR, FMC_PCR_ECCEN);
865#if defined(FMC_Bank2_3)
866 if (Bank == FMC_NAND_BANK2)
868 CLEAR_BIT(Device->PCR2, FMC_PCR2_ECCEN);
872 CLEAR_BIT(Device->PCR3, FMC_PCR2_ECCEN);
878 CLEAR_BIT(Device->PCR, FMC_PCR_ECCEN);
905 while (__FMC_NAND_GET_FLAG(Device, Bank,
FMC_FLAG_FEMPT) == RESET)
910 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U))
917#if defined(FMC_Bank2_3)
918 if (Bank == FMC_NAND_BANK2)
921 *ECCval = (uint32_t)Device->ECCR2;
926 *ECCval = (uint32_t)Device->ECCR3;
933 *ECCval = (uint32_t)Device->ECCR;
944#if defined(FMC_Bank4)
993HAL_StatusTypeDef FMC_PCCARD_Init(FMC_PCCARD_TypeDef *Device,
const FMC_PCCARD_InitTypeDef *Init)
997#if defined(FMC_Bank3) || defined(FMC_Bank2_3)
1004 MODIFY_REG(Device->PCR4,
1010 (FMC_PCR_MEMORY_TYPE_PCCARD |
1012 FMC_NAND_PCC_MEM_BUS_WIDTH_16 |
1013 (Init->TCLRSetupTime << FMC_PCR4_TCLR_Pos) |
1014 (Init->TARSetupTime << FMC_PCR4_TAR_Pos)));
1027 const FMC_NAND_PCC_TimingTypeDef *Timing)
1031#if defined(FMC_Bank3) || defined(FMC_Bank2_3)
1039 WRITE_REG(Device->PMEM4, (Timing->SetupTime |
1040 ((Timing->WaitSetupTime) << FMC_PMEM4_MEMWAIT4_Pos) |
1041 ((Timing->HoldSetupTime) << FMC_PMEM4_MEMHOLD4_Pos) |
1042 ((Timing->HiZSetupTime) << FMC_PMEM4_MEMHIZ4_Pos)));
1054HAL_StatusTypeDef FMC_PCCARD_AttributeSpace_Timing_Init(FMC_PCCARD_TypeDef *Device,
1055 const FMC_NAND_PCC_TimingTypeDef *Timing)
1059#if defined(FMC_Bank3) || defined(FMC_Bank2_3)
1067 WRITE_REG(Device->PATT4, (Timing->SetupTime |
1068 ((Timing->WaitSetupTime) << FMC_PATT4_ATTWAIT4_Pos) |
1069 ((Timing->HoldSetupTime) << FMC_PATT4_ATTHOLD4_Pos) |
1070 ((Timing->HiZSetupTime) << FMC_PATT4_ATTHIZ4_Pos)));
1083 const FMC_NAND_PCC_TimingTypeDef *Timing)
1087#if defined(FMC_Bank3) || defined(FMC_Bank2_3)
1095 WRITE_REG(Device->PIO4, (Timing->SetupTime |
1096 (Timing->WaitSetupTime << FMC_PIO4_IOWAIT4_Pos) |
1097 (Timing->HoldSetupTime << FMC_PIO4_IOHOLD4_Pos) |
1098 (Timing->HiZSetupTime << FMC_PIO4_IOHIZ4_Pos)));
1114 __FMC_PCCARD_DISABLE(Device);
1117 Device->PCR4 = 0x00000018U;
1118 Device->SR4 = 0x00000040U;
1119 Device->PMEM4 = 0xFCFCFCFCU;
1120 Device->PATT4 = 0xFCFCFCFCU;
1121 Device->PIO4 = 0xFCFCFCFCU;
1131#if defined(FMC_Bank5_6)
1179HAL_StatusTypeDef FMC_SDRAM_Init(FMC_SDRAM_TypeDef *Device,
const FMC_SDRAM_InitTypeDef *Init)
1184 assert_param(IS_FMC_COLUMNBITS_NUMBER(Init->ColumnBitsNumber));
1185 assert_param(IS_FMC_ROWBITS_NUMBER(Init->RowBitsNumber));
1186 assert_param(IS_FMC_SDMEMORY_WIDTH(Init->MemoryDataWidth));
1187 assert_param(IS_FMC_INTERNALBANK_NUMBER(Init->InternalBankNumber));
1189 assert_param(IS_FMC_WRITE_PROTECTION(Init->WriteProtection));
1190 assert_param(IS_FMC_SDCLOCK_PERIOD(Init->SDClockPeriod));
1192 assert_param(IS_FMC_READPIPE_DELAY(Init->ReadPipeDelay));
1195 if (Init->SDBank == FMC_SDRAM_BANK1)
1197 MODIFY_REG(Device->SDCR[FMC_SDRAM_BANK1],
1199 (Init->ColumnBitsNumber |
1200 Init->RowBitsNumber |
1201 Init->MemoryDataWidth |
1202 Init->InternalBankNumber |
1204 Init->WriteProtection |
1205 Init->SDClockPeriod |
1207 Init->ReadPipeDelay));
1211 MODIFY_REG(Device->SDCR[FMC_SDRAM_BANK1],
1215 (Init->SDClockPeriod |
1217 Init->ReadPipeDelay));
1219 MODIFY_REG(Device->SDCR[FMC_SDRAM_BANK2],
1221 (Init->ColumnBitsNumber |
1222 Init->RowBitsNumber |
1223 Init->MemoryDataWidth |
1224 Init->InternalBankNumber |
1226 Init->WriteProtection));
1242 const FMC_SDRAM_TimingTypeDef *Timing, uint32_t Bank)
1246 assert_param(IS_FMC_LOADTOACTIVE_DELAY(Timing->LoadToActiveDelay));
1247 assert_param(IS_FMC_EXITSELFREFRESH_DELAY(Timing->ExitSelfRefreshDelay));
1248 assert_param(IS_FMC_SELFREFRESH_TIME(Timing->SelfRefreshTime));
1249 assert_param(IS_FMC_ROWCYCLE_DELAY(Timing->RowCycleDelay));
1250 assert_param(IS_FMC_WRITE_RECOVERY_TIME(Timing->WriteRecoveryTime));
1256 if (Bank == FMC_SDRAM_BANK1)
1258 MODIFY_REG(Device->SDTR[FMC_SDRAM_BANK1],
1260 (((Timing->LoadToActiveDelay) - 1U) |
1261 (((Timing->ExitSelfRefreshDelay) - 1U) << FMC_SDTR1_TXSR_Pos) |
1262 (((Timing->SelfRefreshTime) - 1U) << FMC_SDTR1_TRAS_Pos) |
1263 (((Timing->RowCycleDelay) - 1U) << FMC_SDTR1_TRC_Pos) |
1264 (((Timing->WriteRecoveryTime) - 1U) << FMC_SDTR1_TWR_Pos) |
1265 (((Timing->RPDelay) - 1U) << FMC_SDTR1_TRP_Pos) |
1266 (((Timing->RCDDelay) - 1U) << FMC_SDTR1_TRCD_Pos)));
1270 MODIFY_REG(Device->SDTR[FMC_SDRAM_BANK1],
1273 (((Timing->RowCycleDelay) - 1U) << FMC_SDTR1_TRC_Pos) |
1274 (((Timing->RPDelay) - 1U) << FMC_SDTR1_TRP_Pos));
1276 MODIFY_REG(Device->SDTR[FMC_SDRAM_BANK2],
1278 (((Timing->LoadToActiveDelay) - 1U) |
1279 (((Timing->ExitSelfRefreshDelay) - 1U) << FMC_SDTR1_TXSR_Pos) |
1280 (((Timing->SelfRefreshTime) - 1U) << FMC_SDTR1_TRAS_Pos) |
1281 (((Timing->WriteRecoveryTime) - 1U) << FMC_SDTR1_TWR_Pos) |
1282 (((Timing->RCDDelay) - 1U) << FMC_SDTR1_TRCD_Pos)));
1300 Device->SDCR[Bank] = 0x000002D0U;
1301 Device->SDTR[Bank] = 0x0FFFFFFFU;
1302 Device->SDCMR = 0x00000000U;
1303 Device->SDRTR = 0x00000000U;
1304 Device->SDSR = 0x00000000U;
1334HAL_StatusTypeDef FMC_SDRAM_WriteProtection_Enable(FMC_SDRAM_TypeDef *Device, uint32_t Bank)
1341 SET_BIT(Device->SDCR[Bank], FMC_SDRAM_WRITE_PROTECTION_ENABLE);
1351HAL_StatusTypeDef FMC_SDRAM_WriteProtection_Disable(FMC_SDRAM_TypeDef *Device, uint32_t Bank)
1358 CLEAR_BIT(Device->SDCR[Bank], FMC_SDRAM_WRITE_PROTECTION_ENABLE);
1372 const FMC_SDRAM_CommandTypeDef *Command, uint32_t Timeout)
1374 uint32_t tickstart = 0U;
1377 assert_param(IS_FMC_COMMAND_MODE(Command->CommandMode));
1378 assert_param(IS_FMC_COMMAND_TARGET(Command->CommandTarget));
1379 assert_param(IS_FMC_AUTOREFRESH_NUMBER(Command->AutoRefreshNumber));
1380 assert_param(IS_FMC_MODE_REGISTER(Command->ModeRegisterDefinition));
1383 MODIFY_REG(Device->SDCMR, (FMC_SDCMR_MODE | FMC_SDCMR_CTB2 | FMC_SDCMR_CTB1 | FMC_SDCMR_NRFS | FMC_SDCMR_MRD),
1384 ((Command->CommandMode) | (Command->CommandTarget) |
1385 (((Command->AutoRefreshNumber) - 1U) << FMC_SDCMR_NRFS_Pos) |
1386 ((Command->ModeRegisterDefinition) << FMC_SDCMR_MRD_Pos)));
1396 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
1411HAL_StatusTypeDef FMC_SDRAM_ProgramRefreshRate(FMC_SDRAM_TypeDef *Device, uint32_t RefreshRate)
1418 MODIFY_REG(Device->SDRTR, FMC_SDRTR_COUNT, (RefreshRate << FMC_SDRTR_COUNT_Pos));
1430 uint32_t AutoRefreshNumber)
1434 assert_param(IS_FMC_AUTOREFRESH_NUMBER(AutoRefreshNumber));
1437 MODIFY_REG(Device->SDCMR, FMC_SDCMR_NRFS, ((AutoRefreshNumber - 1U) << FMC_SDCMR_NRFS_Pos));
1451uint32_t FMC_SDRAM_GetModeStatus(
const FMC_SDRAM_TypeDef *Device, uint32_t Bank)
1460 if (Bank == FMC_SDRAM_BANK1)
1462 tmpreg = (uint32_t)(Device->SDSR & FMC_SDSR_MODES1);
1466 tmpreg = ((uint32_t)(Device->SDSR & FMC_SDSR_MODES2) >> 2U);
#define FMC_NORSRAM_TimingTypeDef
#define FMC_NORSRAM_DeInit
#define FMC_NORSRAM_TypeDef
#define FMC_NORSRAM_Timing_Init
#define FMC_NORSRAM_EXTENDED_TypeDef
#define FMC_NORSRAM_WriteOperation_Disable
#define FMC_NORSRAM_WriteOperation_Enable
#define FMC_WRITE_OPERATION_ENABLE
#define __FMC_NORSRAM_DISABLE
#define FMC_NORSRAM_Extended_Timing_Init
#define FMC_NORSRAM_InitTypeDef
#define FMC_NORSRAM_BANK1
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
#define HAL_IS_BIT_SET(REG, BIT)
HAL_StatusTypeDef
HAL Status structures definition.