File indexing completed on 2025-05-11 08:23:37
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #ifndef STM32H7xx_LL_FMC_H
0021 #define STM32H7xx_LL_FMC_H
0022
0023 #ifdef __cplusplus
0024 extern "C" {
0025 #endif
0026
0027
0028 #include "stm32h7xx_hal_def.h"
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042 #define IS_FMC_NORSRAM_BANK(__BANK__) (((__BANK__) == FMC_NORSRAM_BANK1) || \
0043 ((__BANK__) == FMC_NORSRAM_BANK2) || \
0044 ((__BANK__) == FMC_NORSRAM_BANK3) || \
0045 ((__BANK__) == FMC_NORSRAM_BANK4))
0046 #define IS_FMC_MUX(__MUX__) (((__MUX__) == FMC_DATA_ADDRESS_MUX_DISABLE) || \
0047 ((__MUX__) == FMC_DATA_ADDRESS_MUX_ENABLE))
0048 #define IS_FMC_MEMORY(__MEMORY__) (((__MEMORY__) == FMC_MEMORY_TYPE_SRAM) || \
0049 ((__MEMORY__) == FMC_MEMORY_TYPE_PSRAM)|| \
0050 ((__MEMORY__) == FMC_MEMORY_TYPE_NOR))
0051 #define IS_FMC_NORSRAM_MEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_8) || \
0052 ((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_16) || \
0053 ((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_32))
0054 #define IS_FMC_PAGESIZE(__SIZE__) (((__SIZE__) == FMC_PAGE_SIZE_NONE) || \
0055 ((__SIZE__) == FMC_PAGE_SIZE_128) || \
0056 ((__SIZE__) == FMC_PAGE_SIZE_256) || \
0057 ((__SIZE__) == FMC_PAGE_SIZE_512) || \
0058 ((__SIZE__) == FMC_PAGE_SIZE_1024))
0059 #define IS_FMC_WRITE_FIFO(__FIFO__) (((__FIFO__) == FMC_WRITE_FIFO_DISABLE) || \
0060 ((__FIFO__) == FMC_WRITE_FIFO_ENABLE))
0061 #define IS_FMC_ACCESS_MODE(__MODE__) (((__MODE__) == FMC_ACCESS_MODE_A) || \
0062 ((__MODE__) == FMC_ACCESS_MODE_B) || \
0063 ((__MODE__) == FMC_ACCESS_MODE_C) || \
0064 ((__MODE__) == FMC_ACCESS_MODE_D))
0065 #define IS_FMC_BURSTMODE(__STATE__) (((__STATE__) == FMC_BURST_ACCESS_MODE_DISABLE) || \
0066 ((__STATE__) == FMC_BURST_ACCESS_MODE_ENABLE))
0067 #define IS_FMC_WAIT_POLARITY(__POLARITY__) (((__POLARITY__) == FMC_WAIT_SIGNAL_POLARITY_LOW) || \
0068 ((__POLARITY__) == FMC_WAIT_SIGNAL_POLARITY_HIGH))
0069 #define IS_FMC_WAIT_SIGNAL_ACTIVE(__ACTIVE__) (((__ACTIVE__) == FMC_WAIT_TIMING_BEFORE_WS) || \
0070 ((__ACTIVE__) == FMC_WAIT_TIMING_DURING_WS))
0071 #define IS_FMC_WRITE_OPERATION(__OPERATION__) (((__OPERATION__) == FMC_WRITE_OPERATION_DISABLE) || \
0072 ((__OPERATION__) == FMC_WRITE_OPERATION_ENABLE))
0073 #define IS_FMC_WAITE_SIGNAL(__SIGNAL__) (((__SIGNAL__) == FMC_WAIT_SIGNAL_DISABLE) || \
0074 ((__SIGNAL__) == FMC_WAIT_SIGNAL_ENABLE))
0075 #define IS_FMC_EXTENDED_MODE(__MODE__) (((__MODE__) == FMC_EXTENDED_MODE_DISABLE) || \
0076 ((__MODE__) == FMC_EXTENDED_MODE_ENABLE))
0077 #define IS_FMC_ASYNWAIT(__STATE__) (((__STATE__) == FMC_ASYNCHRONOUS_WAIT_DISABLE) || \
0078 ((__STATE__) == FMC_ASYNCHRONOUS_WAIT_ENABLE))
0079 #define IS_FMC_DATA_LATENCY(__LATENCY__) (((__LATENCY__) > 1U) && ((__LATENCY__) <= 17U))
0080 #define IS_FMC_WRITE_BURST(__BURST__) (((__BURST__) == FMC_WRITE_BURST_DISABLE) || \
0081 ((__BURST__) == FMC_WRITE_BURST_ENABLE))
0082 #define IS_FMC_CONTINOUS_CLOCK(__CCLOCK__) (((__CCLOCK__) == FMC_CONTINUOUS_CLOCK_SYNC_ONLY) || \
0083 ((__CCLOCK__) == FMC_CONTINUOUS_CLOCK_SYNC_ASYNC))
0084 #define IS_FMC_ADDRESS_SETUP_TIME(__TIME__) ((__TIME__) <= 15U)
0085 #define IS_FMC_ADDRESS_HOLD_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 15U))
0086 #define IS_FMC_DATASETUP_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 255U))
0087 #define IS_FMC_DATAHOLD_DURATION(__DATAHOLD__) ((__DATAHOLD__) <= 3U)
0088 #define IS_FMC_TURNAROUND_TIME(__TIME__) ((__TIME__) <= 15U)
0089 #define IS_FMC_CLK_DIV(__DIV__) (((__DIV__) > 1U) && ((__DIV__) <= 16U))
0090 #define IS_FMC_NORSRAM_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NORSRAM_DEVICE)
0091 #define IS_FMC_NORSRAM_EXTENDED_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NORSRAM_EXTENDED_DEVICE)
0092
0093
0094 #define IS_FMC_NAND_BANK(__BANK__) ((__BANK__) == FMC_NAND_BANK3)
0095 #define IS_FMC_WAIT_FEATURE(__FEATURE__) (((__FEATURE__) == FMC_NAND_WAIT_FEATURE_DISABLE) || \
0096 ((__FEATURE__) == FMC_NAND_WAIT_FEATURE_ENABLE))
0097 #define IS_FMC_NAND_MEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FMC_NAND_MEM_BUS_WIDTH_8) || \
0098 ((__WIDTH__) == FMC_NAND_MEM_BUS_WIDTH_16))
0099 #define IS_FMC_ECC_STATE(__STATE__) (((__STATE__) == FMC_NAND_ECC_DISABLE) || \
0100 ((__STATE__) == FMC_NAND_ECC_ENABLE))
0101
0102 #define IS_FMC_ECCPAGE_SIZE(__SIZE__) (((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_256BYTE) || \
0103 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_512BYTE) || \
0104 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_1024BYTE) || \
0105 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_2048BYTE) || \
0106 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_4096BYTE) || \
0107 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_8192BYTE))
0108 #define IS_FMC_TCLR_TIME(__TIME__) ((__TIME__) <= 255U)
0109 #define IS_FMC_TAR_TIME(__TIME__) ((__TIME__) <= 255U)
0110 #define IS_FMC_SETUP_TIME(__TIME__) ((__TIME__) <= 254U)
0111 #define IS_FMC_WAIT_TIME(__TIME__) ((__TIME__) <= 254U)
0112 #define IS_FMC_HOLD_TIME(__TIME__) ((__TIME__) <= 254U)
0113 #define IS_FMC_HIZ_TIME(__TIME__) ((__TIME__) <= 254U)
0114 #define IS_FMC_NAND_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NAND_DEVICE)
0115
0116
0117 #define IS_FMC_SDMEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FMC_SDRAM_MEM_BUS_WIDTH_8) || \
0118 ((__WIDTH__) == FMC_SDRAM_MEM_BUS_WIDTH_16) || \
0119 ((__WIDTH__) == FMC_SDRAM_MEM_BUS_WIDTH_32))
0120 #define IS_FMC_WRITE_PROTECTION(__WRITE__) (((__WRITE__) == FMC_SDRAM_WRITE_PROTECTION_DISABLE) || \
0121 ((__WRITE__) == FMC_SDRAM_WRITE_PROTECTION_ENABLE))
0122 #define IS_FMC_SDCLOCK_PERIOD(__PERIOD__) (((__PERIOD__) == FMC_SDRAM_CLOCK_DISABLE) || \
0123 ((__PERIOD__) == FMC_SDRAM_CLOCK_PERIOD_2) || \
0124 ((__PERIOD__) == FMC_SDRAM_CLOCK_PERIOD_3))
0125 #define IS_FMC_READ_BURST(__RBURST__) (((__RBURST__) == FMC_SDRAM_RBURST_DISABLE) || \
0126 ((__RBURST__) == FMC_SDRAM_RBURST_ENABLE))
0127 #define IS_FMC_READPIPE_DELAY(__DELAY__) (((__DELAY__) == FMC_SDRAM_RPIPE_DELAY_0) || \
0128 ((__DELAY__) == FMC_SDRAM_RPIPE_DELAY_1) || \
0129 ((__DELAY__) == FMC_SDRAM_RPIPE_DELAY_2))
0130 #define IS_FMC_COMMAND_MODE(__COMMAND__) (((__COMMAND__) == FMC_SDRAM_CMD_NORMAL_MODE) || \
0131 ((__COMMAND__) == FMC_SDRAM_CMD_CLK_ENABLE) || \
0132 ((__COMMAND__) == FMC_SDRAM_CMD_PALL) || \
0133 ((__COMMAND__) == FMC_SDRAM_CMD_AUTOREFRESH_MODE) || \
0134 ((__COMMAND__) == FMC_SDRAM_CMD_LOAD_MODE) || \
0135 ((__COMMAND__) == FMC_SDRAM_CMD_SELFREFRESH_MODE) || \
0136 ((__COMMAND__) == FMC_SDRAM_CMD_POWERDOWN_MODE))
0137 #define IS_FMC_COMMAND_TARGET(__TARGET__) (((__TARGET__) == FMC_SDRAM_CMD_TARGET_BANK1) || \
0138 ((__TARGET__) == FMC_SDRAM_CMD_TARGET_BANK2) || \
0139 ((__TARGET__) == FMC_SDRAM_CMD_TARGET_BANK1_2))
0140 #define IS_FMC_LOADTOACTIVE_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
0141 #define IS_FMC_EXITSELFREFRESH_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
0142 #define IS_FMC_SELFREFRESH_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 16U))
0143 #define IS_FMC_ROWCYCLE_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
0144 #define IS_FMC_WRITE_RECOVERY_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 16U))
0145 #define IS_FMC_RP_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
0146 #define IS_FMC_RCD_DELAY(__DELAY__) (((__DELAY__) > 0U) && ((__DELAY__) <= 16U))
0147 #define IS_FMC_AUTOREFRESH_NUMBER(__NUMBER__) (((__NUMBER__) > 0U) && ((__NUMBER__) <= 15U))
0148 #define IS_FMC_MODE_REGISTER(__CONTENT__) ((__CONTENT__) <= 8191U)
0149 #define IS_FMC_REFRESH_RATE(__RATE__) ((__RATE__) <= 8191U)
0150 #define IS_FMC_SDRAM_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_SDRAM_DEVICE)
0151 #define IS_FMC_SDRAM_BANK(__BANK__) (((__BANK__) == FMC_SDRAM_BANK1) || \
0152 ((__BANK__) == FMC_SDRAM_BANK2))
0153 #define IS_FMC_COLUMNBITS_NUMBER(__COLUMN__) (((__COLUMN__) == FMC_SDRAM_COLUMN_BITS_NUM_8) || \
0154 ((__COLUMN__) == FMC_SDRAM_COLUMN_BITS_NUM_9) || \
0155 ((__COLUMN__) == FMC_SDRAM_COLUMN_BITS_NUM_10) || \
0156 ((__COLUMN__) == FMC_SDRAM_COLUMN_BITS_NUM_11))
0157 #define IS_FMC_ROWBITS_NUMBER(__ROW__) (((__ROW__) == FMC_SDRAM_ROW_BITS_NUM_11) || \
0158 ((__ROW__) == FMC_SDRAM_ROW_BITS_NUM_12) || \
0159 ((__ROW__) == FMC_SDRAM_ROW_BITS_NUM_13))
0160 #define IS_FMC_INTERNALBANK_NUMBER(__NUMBER__) (((__NUMBER__) == FMC_SDRAM_INTERN_BANKS_NUM_2) || \
0161 ((__NUMBER__) == FMC_SDRAM_INTERN_BANKS_NUM_4))
0162 #define IS_FMC_CAS_LATENCY(__LATENCY__) (((__LATENCY__) == FMC_SDRAM_CAS_LATENCY_1) || \
0163 ((__LATENCY__) == FMC_SDRAM_CAS_LATENCY_2) || \
0164 ((__LATENCY__) == FMC_SDRAM_CAS_LATENCY_3))
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178 #define FMC_NORSRAM_TypeDef FMC_Bank1_TypeDef
0179 #define FMC_NORSRAM_EXTENDED_TypeDef FMC_Bank1E_TypeDef
0180 #define FMC_NAND_TypeDef FMC_Bank3_TypeDef
0181 #define FMC_SDRAM_TypeDef FMC_Bank5_6_TypeDef
0182
0183 #define FMC_NORSRAM_DEVICE FMC_Bank1_R
0184 #define FMC_NORSRAM_EXTENDED_DEVICE FMC_Bank1E_R
0185 #define FMC_NAND_DEVICE FMC_Bank3_R
0186 #define FMC_SDRAM_DEVICE FMC_Bank5_6_R
0187
0188
0189
0190
0191 typedef struct
0192 {
0193 uint32_t NSBank;
0194
0195
0196 uint32_t DataAddressMux;
0197
0198
0199
0200 uint32_t MemoryType;
0201
0202
0203
0204 uint32_t MemoryDataWidth;
0205
0206
0207 uint32_t BurstAccessMode;
0208
0209
0210
0211 uint32_t WaitSignalPolarity;
0212
0213
0214
0215 uint32_t WaitSignalActive;
0216
0217
0218
0219
0220 uint32_t WriteOperation;
0221
0222
0223 uint32_t WaitSignal;
0224
0225
0226
0227 uint32_t ExtendedMode;
0228
0229
0230 uint32_t AsynchronousWait;
0231
0232
0233
0234 uint32_t WriteBurst;
0235
0236
0237 uint32_t ContinuousClock;
0238
0239
0240
0241
0242 uint32_t WriteFifo;
0243
0244
0245
0246
0247 uint32_t PageSize;
0248
0249 } FMC_NORSRAM_InitTypeDef;
0250
0251
0252
0253
0254 typedef struct
0255 {
0256 uint32_t AddressSetupTime;
0257
0258
0259
0260
0261 uint32_t AddressHoldTime;
0262
0263
0264
0265
0266 uint32_t DataSetupTime;
0267
0268
0269
0270
0271
0272 uint32_t BusTurnAroundDuration;
0273
0274
0275
0276
0277 uint32_t CLKDivision;
0278
0279
0280
0281
0282
0283 uint32_t DataLatency;
0284
0285
0286
0287
0288
0289
0290
0291 uint32_t AccessMode;
0292
0293 } FMC_NORSRAM_TimingTypeDef;
0294
0295
0296
0297
0298 typedef struct
0299 {
0300 uint32_t NandBank;
0301
0302
0303 uint32_t Waitfeature;
0304
0305
0306 uint32_t MemoryDataWidth;
0307
0308
0309 uint32_t EccComputation;
0310
0311
0312 uint32_t ECCPageSize;
0313
0314
0315 uint32_t TCLRSetupTime;
0316
0317
0318
0319 uint32_t TARSetupTime;
0320
0321
0322 } FMC_NAND_InitTypeDef;
0323
0324
0325
0326
0327 typedef struct
0328 {
0329 uint32_t SetupTime;
0330
0331
0332
0333
0334
0335 uint32_t WaitSetupTime;
0336
0337
0338
0339
0340
0341 uint32_t HoldSetupTime;
0342
0343
0344
0345
0346
0347
0348 uint32_t HiZSetupTime;
0349
0350
0351
0352
0353 } FMC_NAND_PCC_TimingTypeDef;
0354
0355
0356
0357
0358
0359 typedef struct
0360 {
0361 uint32_t SDBank;
0362
0363
0364 uint32_t ColumnBitsNumber;
0365
0366
0367 uint32_t RowBitsNumber;
0368
0369
0370 uint32_t MemoryDataWidth;
0371
0372
0373 uint32_t InternalBankNumber;
0374
0375
0376 uint32_t CASLatency;
0377
0378
0379 uint32_t WriteProtection;
0380
0381
0382 uint32_t SDClockPeriod;
0383
0384
0385
0386 uint32_t ReadBurst;
0387
0388
0389
0390 uint32_t ReadPipeDelay;
0391
0392 } FMC_SDRAM_InitTypeDef;
0393
0394
0395
0396
0397 typedef struct
0398 {
0399 uint32_t LoadToActiveDelay;
0400
0401
0402
0403 uint32_t ExitSelfRefreshDelay;
0404
0405
0406
0407 uint32_t SelfRefreshTime;
0408
0409
0410
0411 uint32_t RowCycleDelay;
0412
0413
0414
0415
0416 uint32_t WriteRecoveryTime;
0417
0418
0419 uint32_t RPDelay;
0420
0421
0422
0423 uint32_t RCDDelay;
0424
0425
0426 } FMC_SDRAM_TimingTypeDef;
0427
0428
0429
0430
0431 typedef struct
0432 {
0433 uint32_t CommandMode;
0434
0435
0436 uint32_t CommandTarget;
0437
0438
0439 uint32_t AutoRefreshNumber;
0440
0441
0442
0443 uint32_t ModeRegisterDefinition;
0444 } FMC_SDRAM_CommandTypeDef;
0445
0446
0447
0448
0449
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459
0460
0461
0462
0463 #define FMC_NORSRAM_BANK1 (0x00000000U)
0464 #define FMC_NORSRAM_BANK2 (0x00000002U)
0465 #define FMC_NORSRAM_BANK3 (0x00000004U)
0466 #define FMC_NORSRAM_BANK4 (0x00000006U)
0467
0468
0469
0470
0471
0472
0473
0474
0475 #define FMC_DATA_ADDRESS_MUX_DISABLE (0x00000000U)
0476 #define FMC_DATA_ADDRESS_MUX_ENABLE (0x00000002U)
0477
0478
0479
0480
0481
0482
0483
0484
0485 #define FMC_MEMORY_TYPE_SRAM (0x00000000U)
0486 #define FMC_MEMORY_TYPE_PSRAM (0x00000004U)
0487 #define FMC_MEMORY_TYPE_NOR (0x00000008U)
0488
0489
0490
0491
0492
0493
0494
0495
0496 #define FMC_NORSRAM_MEM_BUS_WIDTH_8 (0x00000000U)
0497 #define FMC_NORSRAM_MEM_BUS_WIDTH_16 (0x00000010U)
0498 #define FMC_NORSRAM_MEM_BUS_WIDTH_32 (0x00000020U)
0499
0500
0501
0502
0503
0504
0505
0506
0507 #define FMC_NORSRAM_FLASH_ACCESS_ENABLE (0x00000040U)
0508 #define FMC_NORSRAM_FLASH_ACCESS_DISABLE (0x00000000U)
0509
0510
0511
0512
0513
0514
0515
0516
0517 #define FMC_BURST_ACCESS_MODE_DISABLE (0x00000000U)
0518 #define FMC_BURST_ACCESS_MODE_ENABLE (0x00000100U)
0519
0520
0521
0522
0523
0524
0525
0526
0527 #define FMC_WAIT_SIGNAL_POLARITY_LOW (0x00000000U)
0528 #define FMC_WAIT_SIGNAL_POLARITY_HIGH (0x00000200U)
0529
0530
0531
0532
0533
0534
0535
0536
0537 #define FMC_WAIT_TIMING_BEFORE_WS (0x00000000U)
0538 #define FMC_WAIT_TIMING_DURING_WS (0x00000800U)
0539
0540
0541
0542
0543
0544
0545
0546
0547 #define FMC_WRITE_OPERATION_DISABLE (0x00000000U)
0548 #define FMC_WRITE_OPERATION_ENABLE (0x00001000U)
0549
0550
0551
0552
0553
0554
0555
0556
0557 #define FMC_WAIT_SIGNAL_DISABLE (0x00000000U)
0558 #define FMC_WAIT_SIGNAL_ENABLE (0x00002000U)
0559
0560
0561
0562
0563
0564
0565
0566
0567 #define FMC_EXTENDED_MODE_DISABLE (0x00000000U)
0568 #define FMC_EXTENDED_MODE_ENABLE (0x00004000U)
0569
0570
0571
0572
0573
0574
0575
0576
0577 #define FMC_ASYNCHRONOUS_WAIT_DISABLE (0x00000000U)
0578 #define FMC_ASYNCHRONOUS_WAIT_ENABLE (0x00008000U)
0579
0580
0581
0582
0583
0584
0585
0586
0587 #define FMC_PAGE_SIZE_NONE (0x00000000U)
0588 #define FMC_PAGE_SIZE_128 FMC_BCRx_CPSIZE_0
0589 #define FMC_PAGE_SIZE_256 FMC_BCRx_CPSIZE_1
0590 #define FMC_PAGE_SIZE_512 (FMC_BCRx_CPSIZE_0\
0591 | FMC_BCRx_CPSIZE_1)
0592 #define FMC_PAGE_SIZE_1024 FMC_BCRx_CPSIZE_2
0593
0594
0595
0596
0597
0598
0599
0600
0601 #define FMC_WRITE_BURST_DISABLE (0x00000000U)
0602 #define FMC_WRITE_BURST_ENABLE (0x00080000U)
0603
0604
0605
0606
0607
0608
0609
0610
0611 #define FMC_CONTINUOUS_CLOCK_SYNC_ONLY (0x00000000U)
0612 #define FMC_CONTINUOUS_CLOCK_SYNC_ASYNC (0x00100000U)
0613
0614
0615
0616
0617 #if defined(FMC_BCR1_WFDIS)
0618
0619
0620
0621
0622 #define FMC_WRITE_FIFO_DISABLE FMC_BCR1_WFDIS
0623 #define FMC_WRITE_FIFO_ENABLE (0x00000000U)
0624 #endif
0625
0626
0627
0628
0629
0630
0631
0632
0633 #define FMC_ACCESS_MODE_A (0x00000000U)
0634 #define FMC_ACCESS_MODE_B (0x10000000U)
0635 #define FMC_ACCESS_MODE_C (0x20000000U)
0636 #define FMC_ACCESS_MODE_D (0x30000000U)
0637
0638
0639
0640
0641
0642
0643
0644
0645
0646
0647
0648
0649
0650
0651
0652
0653
0654 #define FMC_NAND_BANK3 (0x00000100U)
0655
0656
0657
0658
0659
0660
0661
0662
0663 #define FMC_NAND_WAIT_FEATURE_DISABLE (0x00000000U)
0664 #define FMC_NAND_WAIT_FEATURE_ENABLE (0x00000002U)
0665
0666
0667
0668
0669
0670
0671
0672
0673 #define FMC_PCR_MEMORY_TYPE_NAND (0x00000008U)
0674
0675
0676
0677
0678
0679
0680
0681
0682 #define FMC_NAND_MEM_BUS_WIDTH_8 (0x00000000U)
0683 #define FMC_NAND_MEM_BUS_WIDTH_16 (0x00000010U)
0684
0685
0686
0687
0688
0689
0690
0691
0692 #define FMC_NAND_ECC_DISABLE (0x00000000U)
0693 #define FMC_NAND_ECC_ENABLE (0x00000040U)
0694
0695
0696
0697
0698
0699
0700
0701
0702 #define FMC_NAND_ECC_PAGE_SIZE_256BYTE (0x00000000U)
0703 #define FMC_NAND_ECC_PAGE_SIZE_512BYTE (0x00020000U)
0704 #define FMC_NAND_ECC_PAGE_SIZE_1024BYTE (0x00040000U)
0705 #define FMC_NAND_ECC_PAGE_SIZE_2048BYTE (0x00060000U)
0706 #define FMC_NAND_ECC_PAGE_SIZE_4096BYTE (0x00080000U)
0707 #define FMC_NAND_ECC_PAGE_SIZE_8192BYTE (0x000A0000U)
0708
0709
0710
0711
0712
0713
0714
0715
0716
0717
0718
0719
0720
0721
0722
0723
0724 #define FMC_SDRAM_BANK1 (0x00000000U)
0725 #define FMC_SDRAM_BANK2 (0x00000001U)
0726
0727
0728
0729
0730
0731
0732
0733
0734 #define FMC_SDRAM_COLUMN_BITS_NUM_8 (0x00000000U)
0735 #define FMC_SDRAM_COLUMN_BITS_NUM_9 (0x00000001U)
0736 #define FMC_SDRAM_COLUMN_BITS_NUM_10 (0x00000002U)
0737 #define FMC_SDRAM_COLUMN_BITS_NUM_11 (0x00000003U)
0738
0739
0740
0741
0742
0743
0744
0745
0746 #define FMC_SDRAM_ROW_BITS_NUM_11 (0x00000000U)
0747 #define FMC_SDRAM_ROW_BITS_NUM_12 (0x00000004U)
0748 #define FMC_SDRAM_ROW_BITS_NUM_13 (0x00000008U)
0749
0750
0751
0752
0753
0754
0755
0756
0757 #define FMC_SDRAM_MEM_BUS_WIDTH_8 (0x00000000U)
0758 #define FMC_SDRAM_MEM_BUS_WIDTH_16 (0x00000010U)
0759 #define FMC_SDRAM_MEM_BUS_WIDTH_32 (0x00000020U)
0760
0761
0762
0763
0764
0765
0766
0767
0768 #define FMC_SDRAM_INTERN_BANKS_NUM_2 (0x00000000U)
0769 #define FMC_SDRAM_INTERN_BANKS_NUM_4 (0x00000040U)
0770
0771
0772
0773
0774
0775
0776
0777
0778 #define FMC_SDRAM_CAS_LATENCY_1 (0x00000080U)
0779 #define FMC_SDRAM_CAS_LATENCY_2 (0x00000100U)
0780 #define FMC_SDRAM_CAS_LATENCY_3 (0x00000180U)
0781
0782
0783
0784
0785
0786
0787
0788
0789 #define FMC_SDRAM_WRITE_PROTECTION_DISABLE (0x00000000U)
0790 #define FMC_SDRAM_WRITE_PROTECTION_ENABLE (0x00000200U)
0791
0792
0793
0794
0795
0796
0797
0798
0799 #define FMC_SDRAM_CLOCK_DISABLE (0x00000000U)
0800 #define FMC_SDRAM_CLOCK_PERIOD_2 (0x00000800U)
0801 #define FMC_SDRAM_CLOCK_PERIOD_3 (0x00000C00U)
0802
0803
0804
0805
0806
0807
0808
0809
0810 #define FMC_SDRAM_RBURST_DISABLE (0x00000000U)
0811 #define FMC_SDRAM_RBURST_ENABLE (0x00001000U)
0812
0813
0814
0815
0816
0817
0818
0819
0820 #define FMC_SDRAM_RPIPE_DELAY_0 (0x00000000U)
0821 #define FMC_SDRAM_RPIPE_DELAY_1 (0x00002000U)
0822 #define FMC_SDRAM_RPIPE_DELAY_2 (0x00004000U)
0823
0824
0825
0826
0827
0828
0829
0830
0831 #define FMC_SDRAM_CMD_NORMAL_MODE (0x00000000U)
0832 #define FMC_SDRAM_CMD_CLK_ENABLE (0x00000001U)
0833 #define FMC_SDRAM_CMD_PALL (0x00000002U)
0834 #define FMC_SDRAM_CMD_AUTOREFRESH_MODE (0x00000003U)
0835 #define FMC_SDRAM_CMD_LOAD_MODE (0x00000004U)
0836 #define FMC_SDRAM_CMD_SELFREFRESH_MODE (0x00000005U)
0837 #define FMC_SDRAM_CMD_POWERDOWN_MODE (0x00000006U)
0838
0839
0840
0841
0842
0843
0844
0845
0846 #define FMC_SDRAM_CMD_TARGET_BANK2 FMC_SDCMR_CTB2
0847 #define FMC_SDRAM_CMD_TARGET_BANK1 FMC_SDCMR_CTB1
0848 #define FMC_SDRAM_CMD_TARGET_BANK1_2 (0x00000018U)
0849
0850
0851
0852
0853
0854
0855
0856
0857 #define FMC_SDRAM_NORMAL_MODE (0x00000000U)
0858 #define FMC_SDRAM_SELF_REFRESH_MODE FMC_SDSR_MODES1_0
0859 #define FMC_SDRAM_POWER_DOWN_MODE FMC_SDSR_MODES1_1
0860
0861
0862
0863
0864
0865
0866
0867
0868
0869
0870
0871
0872
0873 #define FMC_IT_RISING_EDGE (0x00000008U)
0874 #define FMC_IT_LEVEL (0x00000010U)
0875 #define FMC_IT_FALLING_EDGE (0x00000020U)
0876 #define FMC_IT_REFRESH_ERROR (0x00004000U)
0877
0878
0879
0880
0881
0882
0883
0884
0885 #define FMC_FLAG_RISING_EDGE (0x00000001U)
0886 #define FMC_FLAG_LEVEL (0x00000002U)
0887 #define FMC_FLAG_FALLING_EDGE (0x00000004U)
0888 #define FMC_FLAG_FEMPT (0x00000040U)
0889 #define FMC_SDRAM_FLAG_REFRESH_IT FMC_SDSR_RE
0890 #define FMC_SDRAM_FLAG_BUSY FMC_SDSR_BUSY
0891 #define FMC_SDRAM_FLAG_REFRESH_ERROR FMC_SDRTR_CRE
0892
0893
0894
0895
0896
0897
0898
0899
0900
0901
0902
0903
0904
0905
0906
0907
0908
0909
0910
0911
0912
0913 #define __FMC_ENABLE() (FMC_Bank1_R->BTCR[0] |= FMC_BCR1_FMCEN)
0914
0915
0916
0917
0918
0919 #define __FMC_DISABLE() (FMC_Bank1_R->BTCR[0] &= ~FMC_BCR1_FMCEN)
0920
0921
0922
0923
0924
0925
0926
0927
0928
0929
0930
0931
0932 #define __FMC_NORSRAM_ENABLE(__INSTANCE__, __BANK__) ((__INSTANCE__)->BTCR[(__BANK__)]\
0933 |= FMC_BCRx_MBKEN)
0934
0935
0936
0937
0938
0939
0940
0941 #define __FMC_NORSRAM_DISABLE(__INSTANCE__, __BANK__) ((__INSTANCE__)->BTCR[(__BANK__)]\
0942 &= ~FMC_BCRx_MBKEN)
0943
0944
0945
0946
0947
0948
0949
0950
0951
0952
0953
0954
0955
0956
0957
0958
0959 #define __FMC_NAND_ENABLE(__INSTANCE__) ((__INSTANCE__)->PCR |= FMC_PCR_PBKEN)
0960
0961
0962
0963
0964
0965
0966
0967 #define __FMC_NAND_DISABLE(__INSTANCE__, __BANK__) CLEAR_BIT((__INSTANCE__)->PCR, FMC_PCR_PBKEN)
0968
0969
0970
0971
0972
0973
0974
0975
0976
0977
0978
0979
0980
0981
0982
0983
0984
0985
0986
0987
0988
0989 #define __FMC_NAND_ENABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SR |= (__INTERRUPT__))
0990
0991
0992
0993
0994
0995
0996
0997
0998
0999
1000
1001 #define __FMC_NAND_DISABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SR &= ~(__INTERRUPT__))
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015 #define __FMC_NAND_GET_FLAG(__INSTANCE__, __BANK__, __FLAG__) (((__INSTANCE__)->SR &(__FLAG__)) == (__FLAG__))
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028 #define __FMC_NAND_CLEAR_FLAG(__INSTANCE__, __FLAG__) ((__INSTANCE__)->SR &= ~(__FLAG__))
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049 #define __FMC_SDRAM_ENABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SDRTR |= (__INTERRUPT__))
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059 #define __FMC_SDRAM_DISABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SDRTR &= ~(__INTERRUPT__))
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071 #define __FMC_SDRAM_GET_FLAG(__INSTANCE__, __FLAG__) (((__INSTANCE__)->SDSR &(__FLAG__)) == (__FLAG__))
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081 #define __FMC_SDRAM_CLEAR_FLAG(__INSTANCE__, __FLAG__) ((__INSTANCE__)->SDRTR |= (__FLAG__))
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108 HAL_StatusTypeDef FMC_NORSRAM_Init(FMC_NORSRAM_TypeDef *Device,
1109 FMC_NORSRAM_InitTypeDef *Init);
1110 HAL_StatusTypeDef FMC_NORSRAM_Timing_Init(FMC_NORSRAM_TypeDef *Device,
1111 FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank);
1112 HAL_StatusTypeDef FMC_NORSRAM_Extended_Timing_Init(FMC_NORSRAM_EXTENDED_TypeDef *Device,
1113 FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank,
1114 uint32_t ExtendedMode);
1115 HAL_StatusTypeDef FMC_NORSRAM_DeInit(FMC_NORSRAM_TypeDef *Device,
1116 FMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank);
1117
1118
1119
1120
1121
1122
1123
1124
1125 HAL_StatusTypeDef FMC_NORSRAM_WriteOperation_Enable(FMC_NORSRAM_TypeDef *Device, uint32_t Bank);
1126 HAL_StatusTypeDef FMC_NORSRAM_WriteOperation_Disable(FMC_NORSRAM_TypeDef *Device, uint32_t Bank);
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142 HAL_StatusTypeDef FMC_NAND_Init(FMC_NAND_TypeDef *Device, FMC_NAND_InitTypeDef *Init);
1143 HAL_StatusTypeDef FMC_NAND_CommonSpace_Timing_Init(FMC_NAND_TypeDef *Device,
1144 FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
1145 HAL_StatusTypeDef FMC_NAND_AttributeSpace_Timing_Init(FMC_NAND_TypeDef *Device,
1146 FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
1147 HAL_StatusTypeDef FMC_NAND_DeInit(FMC_NAND_TypeDef *Device, uint32_t Bank);
1148
1149
1150
1151
1152
1153
1154
1155
1156 HAL_StatusTypeDef FMC_NAND_ECC_Enable(FMC_NAND_TypeDef *Device, uint32_t Bank);
1157 HAL_StatusTypeDef FMC_NAND_ECC_Disable(FMC_NAND_TypeDef *Device, uint32_t Bank);
1158 HAL_StatusTypeDef FMC_NAND_GetECC(FMC_NAND_TypeDef *Device, uint32_t *ECCval, uint32_t Bank,
1159 uint32_t Timeout);
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176 HAL_StatusTypeDef FMC_SDRAM_Init(FMC_SDRAM_TypeDef *Device, FMC_SDRAM_InitTypeDef *Init);
1177 HAL_StatusTypeDef FMC_SDRAM_Timing_Init(FMC_SDRAM_TypeDef *Device,
1178 FMC_SDRAM_TimingTypeDef *Timing, uint32_t Bank);
1179 HAL_StatusTypeDef FMC_SDRAM_DeInit(FMC_SDRAM_TypeDef *Device, uint32_t Bank);
1180
1181
1182
1183
1184
1185
1186
1187
1188 HAL_StatusTypeDef FMC_SDRAM_WriteProtection_Enable(FMC_SDRAM_TypeDef *Device, uint32_t Bank);
1189 HAL_StatusTypeDef FMC_SDRAM_WriteProtection_Disable(FMC_SDRAM_TypeDef *Device, uint32_t Bank);
1190 HAL_StatusTypeDef FMC_SDRAM_SendCommand(FMC_SDRAM_TypeDef *Device,
1191 FMC_SDRAM_CommandTypeDef *Command, uint32_t Timeout);
1192 HAL_StatusTypeDef FMC_SDRAM_ProgramRefreshRate(FMC_SDRAM_TypeDef *Device, uint32_t RefreshRate);
1193 HAL_StatusTypeDef FMC_SDRAM_SetAutoRefreshNumber(FMC_SDRAM_TypeDef *Device,
1194 uint32_t AutoRefreshNumber);
1195 uint32_t FMC_SDRAM_GetModeStatus(const FMC_SDRAM_TypeDef *Device, uint32_t Bank);
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215 #ifdef __cplusplus
1216 }
1217 #endif
1218
1219 #endif