20#ifndef STM32F4xx_LL_FMC_H
21#define STM32F4xx_LL_FMC_H
43#define IS_FMC_NORSRAM_BANK(__BANK__) (((__BANK__) == FMC_NORSRAM_BANK1) || \
44 ((__BANK__) == FMC_NORSRAM_BANK2) || \
45 ((__BANK__) == FMC_NORSRAM_BANK3) || \
46 ((__BANK__) == FMC_NORSRAM_BANK4))
47#define IS_FMC_MUX(__MUX__) (((__MUX__) == FMC_DATA_ADDRESS_MUX_DISABLE) || \
48 ((__MUX__) == FMC_DATA_ADDRESS_MUX_ENABLE))
49#define IS_FMC_MEMORY(__MEMORY__) (((__MEMORY__) == FMC_MEMORY_TYPE_SRAM) || \
50 ((__MEMORY__) == FMC_MEMORY_TYPE_PSRAM)|| \
51 ((__MEMORY__) == FMC_MEMORY_TYPE_NOR))
52#define IS_FMC_NORSRAM_MEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_8) || \
53 ((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_16) || \
54 ((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_32))
55#define IS_FMC_PAGESIZE(__SIZE__) (((__SIZE__) == FMC_PAGE_SIZE_NONE) || \
56 ((__SIZE__) == FMC_PAGE_SIZE_128) || \
57 ((__SIZE__) == FMC_PAGE_SIZE_256) || \
58 ((__SIZE__) == FMC_PAGE_SIZE_512) || \
59 ((__SIZE__) == FMC_PAGE_SIZE_1024))
60#if defined(FMC_BCR1_WFDIS)
61#define IS_FMC_WRITE_FIFO(__FIFO__) (((__FIFO__) == FMC_WRITE_FIFO_DISABLE) || \
62 ((__FIFO__) == FMC_WRITE_FIFO_ENABLE))
64#define IS_FMC_ACCESS_MODE(__MODE__) (((__MODE__) == FMC_ACCESS_MODE_A) || \
65 ((__MODE__) == FMC_ACCESS_MODE_B) || \
66 ((__MODE__) == FMC_ACCESS_MODE_C) || \
67 ((__MODE__) == FMC_ACCESS_MODE_D))
68#define IS_FMC_BURSTMODE(__STATE__) (((__STATE__) == FMC_BURST_ACCESS_MODE_DISABLE) || \
69 ((__STATE__) == FMC_BURST_ACCESS_MODE_ENABLE))
70#define IS_FMC_WAIT_POLARITY(__POLARITY__) (((__POLARITY__) == FMC_WAIT_SIGNAL_POLARITY_LOW) || \
71 ((__POLARITY__) == FMC_WAIT_SIGNAL_POLARITY_HIGH))
72#define IS_FMC_WRAP_MODE(__MODE__) (((__MODE__) == FMC_WRAP_MODE_DISABLE) || \
73 ((__MODE__) == FMC_WRAP_MODE_ENABLE))
74#define IS_FMC_WAIT_SIGNAL_ACTIVE(__ACTIVE__) (((__ACTIVE__) == FMC_WAIT_TIMING_BEFORE_WS) || \
75 ((__ACTIVE__) == FMC_WAIT_TIMING_DURING_WS))
76#define IS_FMC_WRITE_OPERATION(__OPERATION__) (((__OPERATION__) == FMC_WRITE_OPERATION_DISABLE) || \
77 ((__OPERATION__) == FMC_WRITE_OPERATION_ENABLE))
78#define IS_FMC_WAITE_SIGNAL(__SIGNAL__) (((__SIGNAL__) == FMC_WAIT_SIGNAL_DISABLE) || \
79 ((__SIGNAL__) == FMC_WAIT_SIGNAL_ENABLE))
80#define IS_FMC_EXTENDED_MODE(__MODE__) (((__MODE__) == FMC_EXTENDED_MODE_DISABLE) || \
81 ((__MODE__) == FMC_EXTENDED_MODE_ENABLE))
82#define IS_FMC_ASYNWAIT(__STATE__) (((__STATE__) == FMC_ASYNCHRONOUS_WAIT_DISABLE) || \
83 ((__STATE__) == FMC_ASYNCHRONOUS_WAIT_ENABLE))
84#define IS_FMC_DATA_LATENCY(__LATENCY__) (((__LATENCY__) > 1U) && ((__LATENCY__) <= 17U))
85#define IS_FMC_WRITE_BURST(__BURST__) (((__BURST__) == FMC_WRITE_BURST_DISABLE) || \
86 ((__BURST__) == FMC_WRITE_BURST_ENABLE))
87#define IS_FMC_CONTINOUS_CLOCK(__CCLOCK__) (((__CCLOCK__) == FMC_CONTINUOUS_CLOCK_SYNC_ONLY) || \
88 ((__CCLOCK__) == FMC_CONTINUOUS_CLOCK_SYNC_ASYNC))
89#define IS_FMC_ADDRESS_SETUP_TIME(__TIME__) ((__TIME__) <= 15U)
90#define IS_FMC_ADDRESS_HOLD_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 15U))
91#define IS_FMC_DATASETUP_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 255U))
92#define IS_FMC_DATAHOLD_DURATION(__DATAHOLD__) ((__DATAHOLD__) <= 3U)
93#define IS_FMC_TURNAROUND_TIME(__TIME__) ((__TIME__) <= 15U)
94#define IS_FMC_CLK_DIV(__DIV__) (((__DIV__) > 1U) && ((__DIV__) <= 16U))
95#define IS_FMC_NORSRAM_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NORSRAM_DEVICE)
96#define IS_FMC_NORSRAM_EXTENDED_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NORSRAM_EXTENDED_DEVICE)
99#if (defined(FMC_Bank3) || defined(FMC_Bank2_3))
101#if defined(FMC_Bank2_3)
102#define IS_FMC_NAND_BANK(__BANK__) (((__BANK__) == FMC_NAND_BANK2) || \
103 ((__BANK__) == FMC_NAND_BANK3))
105#define IS_FMC_NAND_BANK(__BANK__) ((__BANK__) == FMC_NAND_BANK3)
107#define IS_FMC_WAIT_FEATURE(__FEATURE__) (((__FEATURE__) == FMC_NAND_PCC_WAIT_FEATURE_DISABLE) || \
108 ((__FEATURE__) == FMC_NAND_PCC_WAIT_FEATURE_ENABLE))
109#define IS_FMC_NAND_MEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FMC_NAND_PCC_MEM_BUS_WIDTH_8) || \
110 ((__WIDTH__) == FMC_NAND_PCC_MEM_BUS_WIDTH_16))
111#define IS_FMC_ECC_STATE(__STATE__) (((__STATE__) == FMC_NAND_ECC_DISABLE) || \
112 ((__STATE__) == FMC_NAND_ECC_ENABLE))
114#define IS_FMC_ECCPAGE_SIZE(__SIZE__) (((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_256BYTE) || \
115 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_512BYTE) || \
116 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_1024BYTE) || \
117 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_2048BYTE) || \
118 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_4096BYTE) || \
119 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_8192BYTE))
120#define IS_FMC_TCLR_TIME(__TIME__) ((__TIME__) <= 255U)
121#define IS_FMC_TAR_TIME(__TIME__) ((__TIME__) <= 255U)
122#define IS_FMC_SETUP_TIME(__TIME__) ((__TIME__) <= 254U)
123#define IS_FMC_WAIT_TIME(__TIME__) ((__TIME__) <= 254U)
124#define IS_FMC_HOLD_TIME(__TIME__) ((__TIME__) <= 254U)
125#define IS_FMC_HIZ_TIME(__TIME__) ((__TIME__) <= 254U)
126#define IS_FMC_NAND_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NAND_DEVICE)
129#if defined(FMC_Bank4)
130#define IS_FMC_PCCARD_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_PCCARD_DEVICE)
133#if defined(FMC_Bank5_6)
135#define IS_FMC_SDMEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FMC_SDRAM_MEM_BUS_WIDTH_8) || \
136 ((__WIDTH__) == FMC_SDRAM_MEM_BUS_WIDTH_16) || \
137 ((__WIDTH__) == FMC_SDRAM_MEM_BUS_WIDTH_32))
138#define IS_FMC_WRITE_PROTECTION(__WRITE__) (((__WRITE__) == FMC_SDRAM_WRITE_PROTECTION_DISABLE) || \
139 ((__WRITE__) == FMC_SDRAM_WRITE_PROTECTION_ENABLE))
140#define IS_FMC_SDCLOCK_PERIOD(__PERIOD__) (((__PERIOD__) == FMC_SDRAM_CLOCK_DISABLE) || \
141 ((__PERIOD__) == FMC_SDRAM_CLOCK_PERIOD_2) || \
142 ((__PERIOD__) == FMC_SDRAM_CLOCK_PERIOD_3))
143#define IS_FMC_READ_BURST(__RBURST__) (((__RBURST__) == FMC_SDRAM_RBURST_DISABLE) || \
144 ((__RBURST__) == FMC_SDRAM_RBURST_ENABLE))
145#define IS_FMC_READPIPE_DELAY(__DELAY__) (((__DELAY__) == FMC_SDRAM_RPIPE_DELAY_0) || \
146 ((__DELAY__) == FMC_SDRAM_RPIPE_DELAY_1) || \
147 ((__DELAY__) == FMC_SDRAM_RPIPE_DELAY_2))
148#define IS_FMC_COMMAND_MODE(__COMMAND__) (((__COMMAND__) == FMC_SDRAM_CMD_NORMAL_MODE) || \
149 ((__COMMAND__) == FMC_SDRAM_CMD_CLK_ENABLE) || \
150 ((__COMMAND__) == FMC_SDRAM_CMD_PALL) || \
151 ((__COMMAND__) == FMC_SDRAM_CMD_AUTOREFRESH_MODE) || \
152 ((__COMMAND__) == FMC_SDRAM_CMD_LOAD_MODE) || \
153 ((__COMMAND__) == FMC_SDRAM_CMD_SELFREFRESH_MODE) || \
154 ((__COMMAND__) == FMC_SDRAM_CMD_POWERDOWN_MODE))
155#define IS_FMC_COMMAND_TARGET(__TARGET__) (((__TARGET__) == FMC_SDRAM_CMD_TARGET_BANK1) || \
156 ((__TARGET__) == FMC_SDRAM_CMD_TARGET_BANK2) || \
157 ((__TARGET__) == FMC_SDRAM_CMD_TARGET_BANK1_2))
158#define IS_FMC_LOADTOACTIVE_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
159#define IS_FMC_EXITSELFREFRESH_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
160#define IS_FMC_SELFREFRESH_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 16U))
161#define IS_FMC_ROWCYCLE_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
162#define IS_FMC_WRITE_RECOVERY_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 16U))
163#define IS_FMC_RP_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
164#define IS_FMC_RCD_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
165#define IS_FMC_AUTOREFRESH_NUMBER(__NUMBER__) (((__NUMBER__) > 0U) && ((__NUMBER__) <= 15U))
166#define IS_FMC_MODE_REGISTER(__CONTENT__) ((__CONTENT__) <= 8191U)
167#define IS_FMC_REFRESH_RATE(__RATE__) ((__RATE__) <= 8191U)
168#define IS_FMC_SDRAM_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_SDRAM_DEVICE)
169#define IS_FMC_SDRAM_BANK(__BANK__) (((__BANK__) == FMC_SDRAM_BANK1) || \
170 ((__BANK__) == FMC_SDRAM_BANK2))
171#define IS_FMC_COLUMNBITS_NUMBER(__COLUMN__) (((__COLUMN__) == FMC_SDRAM_COLUMN_BITS_NUM_8) || \
172 ((__COLUMN__) == FMC_SDRAM_COLUMN_BITS_NUM_9) || \
173 ((__COLUMN__) == FMC_SDRAM_COLUMN_BITS_NUM_10) || \
174 ((__COLUMN__) == FMC_SDRAM_COLUMN_BITS_NUM_11))
175#define IS_FMC_ROWBITS_NUMBER(__ROW__) (((__ROW__) == FMC_SDRAM_ROW_BITS_NUM_11) || \
176 ((__ROW__) == FMC_SDRAM_ROW_BITS_NUM_12) || \
177 ((__ROW__) == FMC_SDRAM_ROW_BITS_NUM_13))
178#define IS_FMC_INTERNALBANK_NUMBER(__NUMBER__) (((__NUMBER__) == FMC_SDRAM_INTERN_BANKS_NUM_2) || \
179 ((__NUMBER__) == FMC_SDRAM_INTERN_BANKS_NUM_4))
180#define IS_FMC_CAS_LATENCY(__LATENCY__) (((__LATENCY__) == FMC_SDRAM_CAS_LATENCY_1) || \
181 ((__LATENCY__) == FMC_SDRAM_CAS_LATENCY_2) || \
182 ((__LATENCY__) == FMC_SDRAM_CAS_LATENCY_3))
196#if defined(FMC_Bank1)
197#define FMC_NORSRAM_TypeDef FMC_Bank1_TypeDef
198#define FMC_NORSRAM_EXTENDED_TypeDef FMC_Bank1E_TypeDef
200#if defined(FMC_Bank2_3)
201#define FMC_NAND_TypeDef FMC_Bank2_3_TypeDef
203#define FMC_NAND_TypeDef FMC_Bank3_TypeDef
205#if defined(FMC_Bank4)
206#define FMC_PCCARD_TypeDef FMC_Bank4_TypeDef
208#if defined(FMC_Bank5_6)
209#define FMC_SDRAM_TypeDef FMC_Bank5_6_TypeDef
212#if defined(FMC_Bank1)
213#define FMC_NORSRAM_DEVICE FMC_Bank1
214#define FMC_NORSRAM_EXTENDED_DEVICE FMC_Bank1E
216#if defined(FMC_Bank2_3)
217#define FMC_NAND_DEVICE FMC_Bank2_3
219#define FMC_NAND_DEVICE FMC_Bank3
221#if defined(FMC_Bank4)
222#define FMC_PCCARD_DEVICE FMC_Bank4
224#if defined(FMC_Bank5_6)
225#define FMC_SDRAM_DEVICE FMC_Bank5_6
228#if defined(FMC_Bank1)
237 uint32_t DataAddressMux;
245 uint32_t MemoryDataWidth;
248 uint32_t BurstAccessMode;
252 uint32_t WaitSignalPolarity;
261 uint32_t WaitSignalActive;
266 uint32_t WriteOperation;
274 uint32_t ExtendedMode;
277 uint32_t AsynchronousWait;
284 uint32_t ContinuousClock;
304 uint32_t AddressSetupTime;
309 uint32_t AddressHoldTime;
314 uint32_t DataSetupTime;
320 uint32_t BusTurnAroundDuration;
325 uint32_t CLKDivision;
331 uint32_t DataLatency;
344#if defined(FMC_Bank3) || defined(FMC_Bank2_3)
353 uint32_t Waitfeature;
356 uint32_t MemoryDataWidth;
359 uint32_t EccComputation;
362 uint32_t ECCPageSize;
365 uint32_t TCLRSetupTime;
369 uint32_t TARSetupTime;
372} FMC_NAND_InitTypeDef;
375#if defined(FMC_Bank3) || defined(FMC_Bank2_3) || defined(FMC_Bank4)
387 uint32_t WaitSetupTime;
393 uint32_t HoldSetupTime;
400 uint32_t HiZSetupTime;
405} FMC_NAND_PCC_TimingTypeDef;
408#if defined(FMC_Bank4)
414 uint32_t Waitfeature;
417 uint32_t TCLRSetupTime;
421 uint32_t TARSetupTime;
424} FMC_PCCARD_InitTypeDef;
427#if defined(FMC_Bank5_6)
436 uint32_t ColumnBitsNumber;
439 uint32_t RowBitsNumber;
442 uint32_t MemoryDataWidth;
445 uint32_t InternalBankNumber;
451 uint32_t WriteProtection;
454 uint32_t SDClockPeriod;
462 uint32_t ReadPipeDelay;
464} FMC_SDRAM_InitTypeDef;
471 uint32_t LoadToActiveDelay;
475 uint32_t ExitSelfRefreshDelay;
479 uint32_t SelfRefreshTime;
483 uint32_t RowCycleDelay;
488 uint32_t WriteRecoveryTime;
498} FMC_SDRAM_TimingTypeDef;
505 uint32_t CommandMode;
508 uint32_t CommandTarget;
511 uint32_t AutoRefreshNumber;
515 uint32_t ModeRegisterDefinition;
516} FMC_SDRAM_CommandTypeDef;
526#if defined(FMC_Bank1)
535#define FMC_NORSRAM_BANK1 (0x00000000U)
536#define FMC_NORSRAM_BANK2 (0x00000002U)
537#define FMC_NORSRAM_BANK3 (0x00000004U)
538#define FMC_NORSRAM_BANK4 (0x00000006U)
546#define FMC_DATA_ADDRESS_MUX_DISABLE (0x00000000U)
547#define FMC_DATA_ADDRESS_MUX_ENABLE (0x00000002U)
555#define FMC_MEMORY_TYPE_SRAM (0x00000000U)
556#define FMC_MEMORY_TYPE_PSRAM (0x00000004U)
557#define FMC_MEMORY_TYPE_NOR (0x00000008U)
565#define FMC_NORSRAM_MEM_BUS_WIDTH_8 (0x00000000U)
566#define FMC_NORSRAM_MEM_BUS_WIDTH_16 (0x00000010U)
567#define FMC_NORSRAM_MEM_BUS_WIDTH_32 (0x00000020U)
575#define FMC_NORSRAM_FLASH_ACCESS_ENABLE (0x00000040U)
576#define FMC_NORSRAM_FLASH_ACCESS_DISABLE (0x00000000U)
584#define FMC_BURST_ACCESS_MODE_DISABLE (0x00000000U)
585#define FMC_BURST_ACCESS_MODE_ENABLE (0x00000100U)
593#define FMC_WAIT_SIGNAL_POLARITY_LOW (0x00000000U)
594#define FMC_WAIT_SIGNAL_POLARITY_HIGH (0x00000200U)
603#define FMC_WRAP_MODE_DISABLE (0x00000000U)
604#define FMC_WRAP_MODE_ENABLE (0x00000400U)
612#define FMC_WAIT_TIMING_BEFORE_WS (0x00000000U)
613#define FMC_WAIT_TIMING_DURING_WS (0x00000800U)
621#define FMC_WRITE_OPERATION_DISABLE (0x00000000U)
622#define FMC_WRITE_OPERATION_ENABLE (0x00001000U)
630#define FMC_WAIT_SIGNAL_DISABLE (0x00000000U)
631#define FMC_WAIT_SIGNAL_ENABLE (0x00002000U)
639#define FMC_EXTENDED_MODE_DISABLE (0x00000000U)
640#define FMC_EXTENDED_MODE_ENABLE (0x00004000U)
648#define FMC_ASYNCHRONOUS_WAIT_DISABLE (0x00000000U)
649#define FMC_ASYNCHRONOUS_WAIT_ENABLE (0x00008000U)
657#define FMC_PAGE_SIZE_NONE (0x00000000U)
658#define FMC_PAGE_SIZE_128 FMC_BCR1_CPSIZE_0
659#define FMC_PAGE_SIZE_256 FMC_BCR1_CPSIZE_1
660#define FMC_PAGE_SIZE_512 (FMC_BCR1_CPSIZE_0\
662#define FMC_PAGE_SIZE_1024 FMC_BCR1_CPSIZE_2
670#define FMC_WRITE_BURST_DISABLE (0x00000000U)
671#define FMC_WRITE_BURST_ENABLE (0x00080000U)
679#define FMC_CONTINUOUS_CLOCK_SYNC_ONLY (0x00000000U)
680#define FMC_CONTINUOUS_CLOCK_SYNC_ASYNC (0x00100000U)
685#if defined(FMC_BCR1_WFDIS)
690#define FMC_WRITE_FIFO_DISABLE FMC_BCR1_WFDIS
691#define FMC_WRITE_FIFO_ENABLE (0x00000000U)
700#define FMC_ACCESS_MODE_A (0x00000000U)
701#define FMC_ACCESS_MODE_B (0x10000000U)
702#define FMC_ACCESS_MODE_C (0x20000000U)
703#define FMC_ACCESS_MODE_D (0x30000000U)
713#if defined(FMC_Bank3) || defined(FMC_Bank2_3) || defined(FMC_Bank4)
721#if defined(FMC_Bank2_3)
722#define FMC_NAND_BANK2 (0x00000010U)
724#define FMC_NAND_BANK3 (0x00000100U)
732#define FMC_NAND_PCC_WAIT_FEATURE_DISABLE (0x00000000U)
733#define FMC_NAND_PCC_WAIT_FEATURE_ENABLE (0x00000002U)
741#if defined(FMC_Bank4)
742#define FMC_PCR_MEMORY_TYPE_PCCARD (0x00000000U)
744#define FMC_PCR_MEMORY_TYPE_NAND (0x00000008U)
752#define FMC_NAND_PCC_MEM_BUS_WIDTH_8 (0x00000000U)
753#define FMC_NAND_PCC_MEM_BUS_WIDTH_16 (0x00000010U)
761#define FMC_NAND_ECC_DISABLE (0x00000000U)
762#define FMC_NAND_ECC_ENABLE (0x00000040U)
770#define FMC_NAND_ECC_PAGE_SIZE_256BYTE (0x00000000U)
771#define FMC_NAND_ECC_PAGE_SIZE_512BYTE (0x00020000U)
772#define FMC_NAND_ECC_PAGE_SIZE_1024BYTE (0x00040000U)
773#define FMC_NAND_ECC_PAGE_SIZE_2048BYTE (0x00060000U)
774#define FMC_NAND_ECC_PAGE_SIZE_4096BYTE (0x00080000U)
775#define FMC_NAND_ECC_PAGE_SIZE_8192BYTE (0x000A0000U)
785#if defined(FMC_Bank5_6)
792#define FMC_SDRAM_BANK1 (0x00000000U)
793#define FMC_SDRAM_BANK2 (0x00000001U)
801#define FMC_SDRAM_COLUMN_BITS_NUM_8 (0x00000000U)
802#define FMC_SDRAM_COLUMN_BITS_NUM_9 (0x00000001U)
803#define FMC_SDRAM_COLUMN_BITS_NUM_10 (0x00000002U)
804#define FMC_SDRAM_COLUMN_BITS_NUM_11 (0x00000003U)
812#define FMC_SDRAM_ROW_BITS_NUM_11 (0x00000000U)
813#define FMC_SDRAM_ROW_BITS_NUM_12 (0x00000004U)
814#define FMC_SDRAM_ROW_BITS_NUM_13 (0x00000008U)
822#define FMC_SDRAM_MEM_BUS_WIDTH_8 (0x00000000U)
823#define FMC_SDRAM_MEM_BUS_WIDTH_16 (0x00000010U)
824#define FMC_SDRAM_MEM_BUS_WIDTH_32 (0x00000020U)
832#define FMC_SDRAM_INTERN_BANKS_NUM_2 (0x00000000U)
833#define FMC_SDRAM_INTERN_BANKS_NUM_4 (0x00000040U)
841#define FMC_SDRAM_CAS_LATENCY_1 (0x00000080U)
842#define FMC_SDRAM_CAS_LATENCY_2 (0x00000100U)
843#define FMC_SDRAM_CAS_LATENCY_3 (0x00000180U)
851#define FMC_SDRAM_WRITE_PROTECTION_DISABLE (0x00000000U)
852#define FMC_SDRAM_WRITE_PROTECTION_ENABLE (0x00000200U)
860#define FMC_SDRAM_CLOCK_DISABLE (0x00000000U)
861#define FMC_SDRAM_CLOCK_PERIOD_2 (0x00000800U)
862#define FMC_SDRAM_CLOCK_PERIOD_3 (0x00000C00U)
870#define FMC_SDRAM_RBURST_DISABLE (0x00000000U)
871#define FMC_SDRAM_RBURST_ENABLE (0x00001000U)
879#define FMC_SDRAM_RPIPE_DELAY_0 (0x00000000U)
880#define FMC_SDRAM_RPIPE_DELAY_1 (0x00002000U)
881#define FMC_SDRAM_RPIPE_DELAY_2 (0x00004000U)
889#define FMC_SDRAM_CMD_NORMAL_MODE (0x00000000U)
890#define FMC_SDRAM_CMD_CLK_ENABLE (0x00000001U)
891#define FMC_SDRAM_CMD_PALL (0x00000002U)
892#define FMC_SDRAM_CMD_AUTOREFRESH_MODE (0x00000003U)
893#define FMC_SDRAM_CMD_LOAD_MODE (0x00000004U)
894#define FMC_SDRAM_CMD_SELFREFRESH_MODE (0x00000005U)
895#define FMC_SDRAM_CMD_POWERDOWN_MODE (0x00000006U)
903#define FMC_SDRAM_CMD_TARGET_BANK2 FMC_SDCMR_CTB2
904#define FMC_SDRAM_CMD_TARGET_BANK1 FMC_SDCMR_CTB1
905#define FMC_SDRAM_CMD_TARGET_BANK1_2 (0x00000018U)
913#define FMC_SDRAM_NORMAL_MODE (0x00000000U)
914#define FMC_SDRAM_SELF_REFRESH_MODE FMC_SDSR_MODES1_0
915#define FMC_SDRAM_POWER_DOWN_MODE FMC_SDSR_MODES1_1
929#if defined(FMC_Bank3) || defined(FMC_Bank2_3) || defined(FMC_Bank4)
930#define FMC_IT_RISING_EDGE (0x00000008U)
931#define FMC_IT_LEVEL (0x00000010U)
932#define FMC_IT_FALLING_EDGE (0x00000020U)
934#if defined(FMC_Bank5_6)
935#define FMC_IT_REFRESH_ERROR (0x00004000U)
944#if defined(FMC_Bank3) || defined(FMC_Bank2_3) || defined(FMC_Bank4)
945#define FMC_FLAG_RISING_EDGE (0x00000001U)
946#define FMC_FLAG_LEVEL (0x00000002U)
947#define FMC_FLAG_FALLING_EDGE (0x00000004U)
948#define FMC_FLAG_FEMPT (0x00000040U)
950#if defined(FMC_Bank5_6)
951#define FMC_SDRAM_FLAG_REFRESH_IT FMC_SDSR_RE
952#define FMC_SDRAM_FLAG_BUSY FMC_SDSR_BUSY
953#define FMC_SDRAM_FLAG_REFRESH_ERROR FMC_SDRTR_CRE
971#if defined(FMC_Bank1)
983#define __FMC_NORSRAM_ENABLE(__INSTANCE__, __BANK__) ((__INSTANCE__)->BTCR[(__BANK__)]\
992#define __FMC_NORSRAM_DISABLE(__INSTANCE__, __BANK__) ((__INSTANCE__)->BTCR[(__BANK__)]\
1000#if defined(FMC_Bank3) || defined(FMC_Bank2_3)
1012#if defined(FMC_Bank2_3)
1013#if defined (FMC_PCR_PBKEN)
1014#define __FMC_NAND_ENABLE(__INSTANCE__) ((__INSTANCE__)->PCR |= FMC_PCR_PBKEN)
1016#define __FMC_NAND_ENABLE(__INSTANCE__, __BANK__) (((__BANK__) == FMC_NAND_BANK2) ? \
1017 ((__INSTANCE__)->PCR2 |= FMC_PCR2_PBKEN) : \
1018 ((__INSTANCE__)->PCR3 |= FMC_PCR3_PBKEN))
1021#define __FMC_NAND_ENABLE(__INSTANCE__) ((__INSTANCE__)->PCR |= FMC_PCR_PBKEN)
1030#if defined(FMC_Bank2_3)
1031#if defined (FMC_PCR_PBKEN)
1032#define __FMC_NAND_DISABLE(__INSTANCE__, __BANK__) CLEAR_BIT((__INSTANCE__)->PCR, FMC_PCR_PBKEN)
1034#define __FMC_NAND_DISABLE(__INSTANCE__, __BANK__) (((__BANK__) == FMC_NAND_BANK2) ? \
1035 CLEAR_BIT((__INSTANCE__)->PCR2, FMC_PCR2_PBKEN) : \
1036 CLEAR_BIT((__INSTANCE__)->PCR3, FMC_PCR3_PBKEN))
1039#define __FMC_NAND_DISABLE(__INSTANCE__, __BANK__) CLEAR_BIT((__INSTANCE__)->PCR, FMC_PCR_PBKEN)
1047#if defined(FMC_Bank4)
1057#define __FMC_PCCARD_ENABLE(__INSTANCE__) ((__INSTANCE__)->PCR4 |= FMC_PCR4_PBKEN)
1064#define __FMC_PCCARD_DISABLE(__INSTANCE__) ((__INSTANCE__)->PCR4 &= ~FMC_PCR4_PBKEN)
1070#if defined(FMC_Bank3) || defined(FMC_Bank2_3)
1087#if defined(FMC_Bank2_3)
1088#define __FMC_NAND_ENABLE_IT(__INSTANCE__, __BANK__, __INTERRUPT__) (((__BANK__) == FMC_NAND_BANK2) ? \
1089 ((__INSTANCE__)->SR2 |= (__INTERRUPT__)) : \
1090 ((__INSTANCE__)->SR3 |= (__INTERRUPT__)))
1092#define __FMC_NAND_ENABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SR |= (__INTERRUPT__))
1106#if defined(FMC_Bank2_3)
1107#define __FMC_NAND_DISABLE_IT(__INSTANCE__, __BANK__, __INTERRUPT__) (((__BANK__) == FMC_NAND_BANK2) ? \
1108 ((__INSTANCE__)->SR2 &= ~(__INTERRUPT__)) : \
1109 ((__INSTANCE__)->SR3 &= ~(__INTERRUPT__)))
1111#define __FMC_NAND_DISABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SR &= ~(__INTERRUPT__))
1126#if defined(FMC_Bank2_3)
1127#define __FMC_NAND_GET_FLAG(__INSTANCE__, __BANK__, __FLAG__) (((__BANK__) == FMC_NAND_BANK2) ? \
1128 (((__INSTANCE__)->SR2 &(__FLAG__)) == (__FLAG__)) : \
1129 (((__INSTANCE__)->SR3 &(__FLAG__)) == (__FLAG__)))
1131#define __FMC_NAND_GET_FLAG(__INSTANCE__, __BANK__, __FLAG__) (((__INSTANCE__)->SR &(__FLAG__)) == (__FLAG__))
1146#if defined(FMC_Bank2_3)
1147#define __FMC_NAND_CLEAR_FLAG(__INSTANCE__, __BANK__, __FLAG__) (((__BANK__) == FMC_NAND_BANK2) ? \
1148 ((__INSTANCE__)->SR2 &= ~(__FLAG__)) : \
1149 ((__INSTANCE__)->SR3 &= ~(__FLAG__)))
1151#define __FMC_NAND_CLEAR_FLAG(__INSTANCE__, __FLAG__) ((__INSTANCE__)->SR &= ~(__FLAG__))
1159#if defined(FMC_Bank4)
1175#define __FMC_PCCARD_ENABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SR4 |= (__INTERRUPT__))
1187#define __FMC_PCCARD_DISABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SR4 &= ~(__INTERRUPT__))
1200#define __FMC_PCCARD_GET_FLAG(__INSTANCE__, __FLAG__) (((__INSTANCE__)->SR4 &(__FLAG__)) == (__FLAG__))
1213#define __FMC_PCCARD_CLEAR_FLAG(__INSTANCE__, __FLAG__) ((__INSTANCE__)->SR4 &= ~(__FLAG__))
1220#if defined(FMC_Bank5_6)
1234#define __FMC_SDRAM_ENABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SDRTR |= (__INTERRUPT__))
1244#define __FMC_SDRAM_DISABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SDRTR &= ~(__INTERRUPT__))
1256#define __FMC_SDRAM_GET_FLAG(__INSTANCE__, __FLAG__) (((__INSTANCE__)->SDSR &(__FLAG__)) == (__FLAG__))
1266#define __FMC_SDRAM_CLEAR_FLAG(__INSTANCE__, __FLAG__) ((__INSTANCE__)->SDRTR |= (__FLAG__))
1285#if defined(FMC_Bank1)
1298 uint32_t ExtendedMode);
1318#if defined(FMC_Bank3) || defined(FMC_Bank2_3)
1327 const FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
1329 const FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
1350#if defined(FMC_Bank4)
1357HAL_StatusTypeDef FMC_PCCARD_Init(FMC_PCCARD_TypeDef *Device,
const FMC_PCCARD_InitTypeDef *Init);
1359 const FMC_NAND_PCC_TimingTypeDef *Timing);
1360HAL_StatusTypeDef FMC_PCCARD_AttributeSpace_Timing_Init(FMC_PCCARD_TypeDef *Device,
1361 const FMC_NAND_PCC_TimingTypeDef *Timing);
1363 const FMC_NAND_PCC_TimingTypeDef *Timing);
1373#if defined(FMC_Bank5_6)
1380HAL_StatusTypeDef FMC_SDRAM_Init(FMC_SDRAM_TypeDef *Device,
const FMC_SDRAM_InitTypeDef *Init);
1382 const FMC_SDRAM_TimingTypeDef *Timing, uint32_t Bank);
1391HAL_StatusTypeDef FMC_SDRAM_WriteProtection_Enable(FMC_SDRAM_TypeDef *Device, uint32_t Bank);
1392HAL_StatusTypeDef FMC_SDRAM_WriteProtection_Disable(FMC_SDRAM_TypeDef *Device, uint32_t Bank);
1394 const FMC_SDRAM_CommandTypeDef *Command, uint32_t Timeout);
1395HAL_StatusTypeDef FMC_SDRAM_ProgramRefreshRate(FMC_SDRAM_TypeDef *Device, uint32_t RefreshRate);
1397 uint32_t AutoRefreshNumber);
1398uint32_t FMC_SDRAM_GetModeStatus(
const FMC_SDRAM_TypeDef *Device, uint32_t Bank);
#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_NORSRAM_Extended_Timing_Init
#define FMC_NORSRAM_InitTypeDef
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition.