File indexing completed on 2025-05-11 08:23:36
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #ifndef STM32H7xx_HAL_OSPI_H
0021 #define STM32H7xx_HAL_OSPI_H
0022
0023 #ifdef __cplusplus
0024 extern "C" {
0025 #endif
0026
0027
0028 #include "stm32h7xx_hal_def.h"
0029
0030 #if defined(OCTOSPI) || defined(OCTOSPI1) || defined(OCTOSPI2)
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049 typedef struct
0050 {
0051 uint32_t FifoThreshold;
0052
0053
0054
0055 uint32_t DualQuad;
0056
0057
0058 uint32_t MemoryType;
0059
0060 uint32_t DeviceSize;
0061
0062
0063
0064 uint32_t ChipSelectHighTime;
0065
0066
0067 uint32_t FreeRunningClock;
0068
0069 uint32_t ClockMode;
0070
0071 uint32_t WrapSize;
0072
0073 uint32_t ClockPrescaler;
0074
0075
0076 uint32_t SampleShifting;
0077
0078
0079 uint32_t DelayHoldQuarterCycle;
0080
0081 uint32_t ChipSelectBoundary;
0082
0083
0084 uint32_t DelayBlockBypass;
0085
0086
0087 uint32_t MaxTran;
0088
0089
0090
0091 uint32_t Refresh;
0092
0093
0094 } OSPI_InitTypeDef;
0095
0096
0097
0098
0099 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U)
0100 typedef struct __OSPI_HandleTypeDef
0101 #else
0102 typedef struct
0103 #endif
0104 {
0105 OCTOSPI_TypeDef *Instance;
0106 OSPI_InitTypeDef Init;
0107 uint8_t *pBuffPtr;
0108 __IO uint32_t XferSize;
0109 __IO uint32_t XferCount;
0110 MDMA_HandleTypeDef *hmdma;
0111 __IO uint32_t State;
0112 __IO uint32_t ErrorCode;
0113 uint32_t Timeout;
0114 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U)
0115 void (* ErrorCallback)(struct __OSPI_HandleTypeDef *hospi);
0116 void (* AbortCpltCallback)(struct __OSPI_HandleTypeDef *hospi);
0117 void (* FifoThresholdCallback)(struct __OSPI_HandleTypeDef *hospi);
0118 void (* CmdCpltCallback)(struct __OSPI_HandleTypeDef *hospi);
0119 void (* RxCpltCallback)(struct __OSPI_HandleTypeDef *hospi);
0120 void (* TxCpltCallback)(struct __OSPI_HandleTypeDef *hospi);
0121 void (* RxHalfCpltCallback)(struct __OSPI_HandleTypeDef *hospi);
0122 void (* TxHalfCpltCallback)(struct __OSPI_HandleTypeDef *hospi);
0123 void (* StatusMatchCallback)(struct __OSPI_HandleTypeDef *hospi);
0124 void (* TimeOutCallback)(struct __OSPI_HandleTypeDef *hospi);
0125
0126 void (* MspInitCallback)(struct __OSPI_HandleTypeDef *hospi);
0127 void (* MspDeInitCallback)(struct __OSPI_HandleTypeDef *hospi);
0128 #endif
0129 } OSPI_HandleTypeDef;
0130
0131
0132
0133
0134 typedef struct
0135 {
0136 uint32_t OperationType;
0137
0138
0139
0140 uint32_t FlashId;
0141
0142
0143 uint32_t Instruction;
0144
0145 uint32_t InstructionMode;
0146
0147 uint32_t InstructionSize;
0148
0149 uint32_t InstructionDtrMode;
0150
0151 uint32_t Address;
0152
0153 uint32_t AddressMode;
0154
0155 uint32_t AddressSize;
0156
0157 uint32_t AddressDtrMode;
0158
0159 uint32_t AlternateBytes;
0160
0161 uint32_t AlternateBytesMode;
0162
0163 uint32_t AlternateBytesSize;
0164
0165 uint32_t AlternateBytesDtrMode;
0166
0167 uint32_t DataMode;
0168
0169 uint32_t NbData;
0170
0171
0172 uint32_t DataDtrMode;
0173
0174 uint32_t DummyCycles;
0175
0176 uint32_t DQSMode;
0177
0178 uint32_t SIOOMode;
0179
0180 } OSPI_RegularCmdTypeDef;
0181
0182
0183
0184
0185 typedef struct
0186 {
0187 uint32_t RWRecoveryTime;
0188
0189 uint32_t AccessTime;
0190
0191 uint32_t WriteZeroLatency;
0192
0193 uint32_t LatencyMode;
0194
0195 } OSPI_HyperbusCfgTypeDef;
0196
0197
0198
0199
0200 typedef struct
0201 {
0202 uint32_t AddressSpace;
0203
0204 uint32_t Address;
0205
0206 uint32_t AddressSize;
0207
0208 uint32_t NbData;
0209
0210
0211
0212 uint32_t DQSMode;
0213
0214 } OSPI_HyperbusCmdTypeDef;
0215
0216
0217
0218
0219 typedef struct
0220 {
0221 uint32_t Match;
0222
0223 uint32_t Mask;
0224
0225 uint32_t MatchMode;
0226
0227 uint32_t AutomaticStop;
0228
0229 uint32_t Interval;
0230
0231 } OSPI_AutoPollingTypeDef;
0232
0233
0234
0235
0236 typedef struct
0237 {
0238 uint32_t TimeOutActivation;
0239
0240 uint32_t TimeOutPeriod;
0241
0242 } OSPI_MemoryMappedTypeDef;
0243
0244
0245
0246
0247 typedef struct
0248 {
0249 uint32_t ClkPort;
0250
0251 uint32_t DQSPort;
0252
0253 uint32_t NCSPort;
0254
0255 uint32_t IOLowPort;
0256
0257 uint32_t IOHighPort;
0258
0259 uint32_t Req2AckTime;
0260
0261
0262 } OSPIM_CfgTypeDef;
0263
0264 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U)
0265
0266
0267
0268 typedef enum
0269 {
0270 HAL_OSPI_ERROR_CB_ID = 0x00U,
0271 HAL_OSPI_ABORT_CB_ID = 0x01U,
0272 HAL_OSPI_FIFO_THRESHOLD_CB_ID = 0x02U,
0273 HAL_OSPI_CMD_CPLT_CB_ID = 0x03U,
0274 HAL_OSPI_RX_CPLT_CB_ID = 0x04U,
0275 HAL_OSPI_TX_CPLT_CB_ID = 0x05U,
0276 HAL_OSPI_RX_HALF_CPLT_CB_ID = 0x06U,
0277 HAL_OSPI_TX_HALF_CPLT_CB_ID = 0x07U,
0278 HAL_OSPI_STATUS_MATCH_CB_ID = 0x08U,
0279 HAL_OSPI_TIMEOUT_CB_ID = 0x09U,
0280
0281 HAL_OSPI_MSP_INIT_CB_ID = 0x0AU,
0282 HAL_OSPI_MSP_DEINIT_CB_ID = 0x0BU
0283 } HAL_OSPI_CallbackIDTypeDef;
0284
0285
0286
0287
0288 typedef void (*pOSPI_CallbackTypeDef)(OSPI_HandleTypeDef *hospi);
0289 #endif
0290
0291
0292
0293
0294
0295
0296
0297
0298
0299
0300
0301
0302
0303
0304 #define HAL_OSPI_STATE_RESET ((uint32_t)0x00000000U)
0305 #define HAL_OSPI_STATE_HYPERBUS_INIT ((uint32_t)0x00000001U)
0306 #define HAL_OSPI_STATE_READY ((uint32_t)0x00000002U)
0307 #define HAL_OSPI_STATE_CMD_CFG ((uint32_t)0x00000004U)
0308 #define HAL_OSPI_STATE_READ_CMD_CFG ((uint32_t)0x00000014U)
0309 #define HAL_OSPI_STATE_WRITE_CMD_CFG ((uint32_t)0x00000024U)
0310 #define HAL_OSPI_STATE_BUSY_CMD ((uint32_t)0x00000008U)
0311 #define HAL_OSPI_STATE_BUSY_TX ((uint32_t)0x00000018U)
0312 #define HAL_OSPI_STATE_BUSY_RX ((uint32_t)0x00000028U)
0313 #define HAL_OSPI_STATE_BUSY_AUTO_POLLING ((uint32_t)0x00000048U)
0314 #define HAL_OSPI_STATE_BUSY_MEM_MAPPED ((uint32_t)0x00000088U)
0315 #define HAL_OSPI_STATE_ABORT ((uint32_t)0x00000100U)
0316 #define HAL_OSPI_STATE_ERROR ((uint32_t)0x00000200U)
0317
0318
0319
0320
0321
0322
0323
0324
0325 #define HAL_OSPI_ERROR_NONE ((uint32_t)0x00000000U)
0326 #define HAL_OSPI_ERROR_TIMEOUT ((uint32_t)0x00000001U)
0327 #define HAL_OSPI_ERROR_TRANSFER ((uint32_t)0x00000002U)
0328 #define HAL_OSPI_ERROR_DMA ((uint32_t)0x00000004U)
0329 #define HAL_OSPI_ERROR_INVALID_PARAM ((uint32_t)0x00000008U)
0330 #define HAL_OSPI_ERROR_INVALID_SEQUENCE ((uint32_t)0x00000010U)
0331 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U)
0332 #define HAL_OSPI_ERROR_INVALID_CALLBACK ((uint32_t)0x00000020U)
0333 #endif
0334
0335
0336
0337
0338
0339
0340
0341
0342 #define HAL_OSPI_DUALQUAD_DISABLE ((uint32_t)0x00000000U)
0343 #define HAL_OSPI_DUALQUAD_ENABLE ((uint32_t)OCTOSPI_CR_DQM)
0344
0345
0346
0347
0348
0349
0350
0351
0352 #define HAL_OSPI_MEMTYPE_MICRON ((uint32_t)0x00000000U)
0353 #define HAL_OSPI_MEMTYPE_MACRONIX ((uint32_t)OCTOSPI_DCR1_MTYP_0)
0354 #define HAL_OSPI_MEMTYPE_APMEMORY ((uint32_t)OCTOSPI_DCR1_MTYP_1)
0355 #define HAL_OSPI_MEMTYPE_MACRONIX_RAM ((uint32_t)(OCTOSPI_DCR1_MTYP_1 | OCTOSPI_DCR1_MTYP_0))
0356 #define HAL_OSPI_MEMTYPE_HYPERBUS ((uint32_t)OCTOSPI_DCR1_MTYP_2)
0357
0358
0359
0360
0361
0362
0363
0364
0365 #define HAL_OSPI_FREERUNCLK_DISABLE ((uint32_t)0x00000000U)
0366 #define HAL_OSPI_FREERUNCLK_ENABLE ((uint32_t)OCTOSPI_DCR1_FRCK)
0367
0368
0369
0370
0371
0372
0373
0374
0375 #define HAL_OSPI_CLOCK_MODE_0 ((uint32_t)0x00000000U)
0376 #define HAL_OSPI_CLOCK_MODE_3 ((uint32_t)OCTOSPI_DCR1_CKMODE)
0377
0378
0379
0380
0381
0382
0383
0384
0385 #define HAL_OSPI_WRAP_NOT_SUPPORTED ((uint32_t)0x00000000U)
0386 #define HAL_OSPI_WRAP_16_BYTES ((uint32_t)OCTOSPI_DCR2_WRAPSIZE_1)
0387 #define HAL_OSPI_WRAP_32_BYTES ((uint32_t)(OCTOSPI_DCR2_WRAPSIZE_0 | OCTOSPI_DCR2_WRAPSIZE_1))
0388 #define HAL_OSPI_WRAP_64_BYTES ((uint32_t)OCTOSPI_DCR2_WRAPSIZE_2)
0389 #define HAL_OSPI_WRAP_128_BYTES ((uint32_t)(OCTOSPI_DCR2_WRAPSIZE_0 | OCTOSPI_DCR2_WRAPSIZE_2))
0390
0391
0392
0393
0394
0395
0396
0397
0398 #define HAL_OSPI_SAMPLE_SHIFTING_NONE ((uint32_t)0x00000000U)
0399 #define HAL_OSPI_SAMPLE_SHIFTING_HALFCYCLE ((uint32_t)OCTOSPI_TCR_SSHIFT)
0400
0401
0402
0403
0404
0405
0406
0407
0408 #define HAL_OSPI_DHQC_DISABLE ((uint32_t)0x00000000U)
0409 #define HAL_OSPI_DHQC_ENABLE ((uint32_t)OCTOSPI_TCR_DHQC)
0410
0411
0412
0413
0414
0415
0416
0417
0418 #define HAL_OSPI_DELAY_BLOCK_USED ((uint32_t)0x00000000U)
0419 #define HAL_OSPI_DELAY_BLOCK_BYPASSED ((uint32_t)OCTOSPI_DCR1_DLYBYP)
0420
0421
0422
0423
0424
0425
0426
0427
0428 #define HAL_OSPI_OPTYPE_COMMON_CFG ((uint32_t)0x00000000U)
0429 #define HAL_OSPI_OPTYPE_READ_CFG ((uint32_t)0x00000001U)
0430 #define HAL_OSPI_OPTYPE_WRITE_CFG ((uint32_t)0x00000002U)
0431 #define HAL_OSPI_OPTYPE_WRAP_CFG ((uint32_t)0x00000003U)
0432
0433
0434
0435
0436
0437
0438
0439
0440 #define HAL_OSPI_FLASH_ID_1 ((uint32_t)0x00000000U)
0441 #define HAL_OSPI_FLASH_ID_2 ((uint32_t)OCTOSPI_CR_FSEL)
0442
0443
0444
0445
0446
0447
0448
0449
0450 #define HAL_OSPI_INSTRUCTION_NONE ((uint32_t)0x00000000U)
0451 #define HAL_OSPI_INSTRUCTION_1_LINE ((uint32_t)OCTOSPI_CCR_IMODE_0)
0452 #define HAL_OSPI_INSTRUCTION_2_LINES ((uint32_t)OCTOSPI_CCR_IMODE_1)
0453 #define HAL_OSPI_INSTRUCTION_4_LINES ((uint32_t)(OCTOSPI_CCR_IMODE_0 | OCTOSPI_CCR_IMODE_1))
0454 #define HAL_OSPI_INSTRUCTION_8_LINES ((uint32_t)OCTOSPI_CCR_IMODE_2)
0455
0456
0457
0458
0459
0460
0461
0462
0463 #define HAL_OSPI_INSTRUCTION_8_BITS ((uint32_t)0x00000000U)
0464 #define HAL_OSPI_INSTRUCTION_16_BITS ((uint32_t)OCTOSPI_CCR_ISIZE_0)
0465 #define HAL_OSPI_INSTRUCTION_24_BITS ((uint32_t)OCTOSPI_CCR_ISIZE_1)
0466 #define HAL_OSPI_INSTRUCTION_32_BITS ((uint32_t)OCTOSPI_CCR_ISIZE)
0467
0468
0469
0470
0471
0472
0473
0474
0475 #define HAL_OSPI_INSTRUCTION_DTR_DISABLE ((uint32_t)0x00000000U)
0476 #define HAL_OSPI_INSTRUCTION_DTR_ENABLE ((uint32_t)OCTOSPI_CCR_IDTR)
0477
0478
0479
0480
0481
0482
0483
0484
0485 #define HAL_OSPI_ADDRESS_NONE ((uint32_t)0x00000000U)
0486 #define HAL_OSPI_ADDRESS_1_LINE ((uint32_t)OCTOSPI_CCR_ADMODE_0)
0487 #define HAL_OSPI_ADDRESS_2_LINES ((uint32_t)OCTOSPI_CCR_ADMODE_1)
0488 #define HAL_OSPI_ADDRESS_4_LINES ((uint32_t)(OCTOSPI_CCR_ADMODE_0 | OCTOSPI_CCR_ADMODE_1))
0489 #define HAL_OSPI_ADDRESS_8_LINES ((uint32_t)OCTOSPI_CCR_ADMODE_2)
0490
0491
0492
0493
0494
0495
0496
0497
0498 #define HAL_OSPI_ADDRESS_8_BITS ((uint32_t)0x00000000U)
0499 #define HAL_OSPI_ADDRESS_16_BITS ((uint32_t)OCTOSPI_CCR_ADSIZE_0)
0500 #define HAL_OSPI_ADDRESS_24_BITS ((uint32_t)OCTOSPI_CCR_ADSIZE_1)
0501 #define HAL_OSPI_ADDRESS_32_BITS ((uint32_t)OCTOSPI_CCR_ADSIZE)
0502
0503
0504
0505
0506
0507
0508
0509
0510 #define HAL_OSPI_ADDRESS_DTR_DISABLE ((uint32_t)0x00000000U)
0511 #define HAL_OSPI_ADDRESS_DTR_ENABLE ((uint32_t)OCTOSPI_CCR_ADDTR)
0512
0513
0514
0515
0516
0517
0518
0519
0520 #define HAL_OSPI_ALTERNATE_BYTES_NONE ((uint32_t)0x00000000U)
0521 #define HAL_OSPI_ALTERNATE_BYTES_1_LINE ((uint32_t)OCTOSPI_CCR_ABMODE_0)
0522 #define HAL_OSPI_ALTERNATE_BYTES_2_LINES ((uint32_t)OCTOSPI_CCR_ABMODE_1)
0523 #define HAL_OSPI_ALTERNATE_BYTES_4_LINES ((uint32_t)(OCTOSPI_CCR_ABMODE_0 | OCTOSPI_CCR_ABMODE_1))
0524 #define HAL_OSPI_ALTERNATE_BYTES_8_LINES ((uint32_t)OCTOSPI_CCR_ABMODE_2)
0525
0526
0527
0528
0529
0530
0531
0532
0533 #define HAL_OSPI_ALTERNATE_BYTES_8_BITS ((uint32_t)0x00000000U)
0534 #define HAL_OSPI_ALTERNATE_BYTES_16_BITS ((uint32_t)OCTOSPI_CCR_ABSIZE_0)
0535 #define HAL_OSPI_ALTERNATE_BYTES_24_BITS ((uint32_t)OCTOSPI_CCR_ABSIZE_1)
0536 #define HAL_OSPI_ALTERNATE_BYTES_32_BITS ((uint32_t)OCTOSPI_CCR_ABSIZE)
0537
0538
0539
0540
0541
0542
0543
0544
0545 #define HAL_OSPI_ALTERNATE_BYTES_DTR_DISABLE ((uint32_t)0x00000000U)
0546 #define HAL_OSPI_ALTERNATE_BYTES_DTR_ENABLE ((uint32_t)OCTOSPI_CCR_ABDTR)
0547
0548
0549
0550
0551
0552
0553
0554
0555 #define HAL_OSPI_DATA_NONE ((uint32_t)0x00000000U)
0556 #define HAL_OSPI_DATA_1_LINE ((uint32_t)OCTOSPI_CCR_DMODE_0)
0557 #define HAL_OSPI_DATA_2_LINES ((uint32_t)OCTOSPI_CCR_DMODE_1)
0558 #define HAL_OSPI_DATA_4_LINES ((uint32_t)(OCTOSPI_CCR_DMODE_0 | OCTOSPI_CCR_DMODE_1))
0559 #define HAL_OSPI_DATA_8_LINES ((uint32_t)OCTOSPI_CCR_DMODE_2)
0560
0561
0562
0563
0564
0565
0566
0567
0568 #define HAL_OSPI_DATA_DTR_DISABLE ((uint32_t)0x00000000U)
0569 #define HAL_OSPI_DATA_DTR_ENABLE ((uint32_t)OCTOSPI_CCR_DDTR)
0570
0571
0572
0573
0574
0575
0576
0577
0578 #define HAL_OSPI_DQS_DISABLE ((uint32_t)0x00000000U)
0579 #define HAL_OSPI_DQS_ENABLE ((uint32_t)OCTOSPI_CCR_DQSE)
0580
0581
0582
0583
0584
0585
0586
0587
0588 #define HAL_OSPI_SIOO_INST_EVERY_CMD ((uint32_t)0x00000000U)
0589 #define HAL_OSPI_SIOO_INST_ONLY_FIRST_CMD ((uint32_t)OCTOSPI_CCR_SIOO)
0590
0591
0592
0593
0594
0595
0596
0597
0598 #define HAL_OSPI_LATENCY_ON_WRITE ((uint32_t)0x00000000U)
0599 #define HAL_OSPI_NO_LATENCY_ON_WRITE ((uint32_t)OCTOSPI_HLCR_WZL)
0600
0601
0602
0603
0604
0605
0606
0607
0608 #define HAL_OSPI_VARIABLE_LATENCY ((uint32_t)0x00000000U)
0609 #define HAL_OSPI_FIXED_LATENCY ((uint32_t)OCTOSPI_HLCR_LM)
0610
0611
0612
0613
0614
0615
0616
0617
0618 #define HAL_OSPI_MEMORY_ADDRESS_SPACE ((uint32_t)0x00000000U)
0619 #define HAL_OSPI_REGISTER_ADDRESS_SPACE ((uint32_t)OCTOSPI_DCR1_MTYP_0)
0620
0621
0622
0623
0624
0625
0626
0627
0628 #define HAL_OSPI_MATCH_MODE_AND ((uint32_t)0x00000000U)
0629 #define HAL_OSPI_MATCH_MODE_OR ((uint32_t)OCTOSPI_CR_PMM)
0630
0631
0632
0633
0634
0635
0636
0637
0638 #define HAL_OSPI_AUTOMATIC_STOP_DISABLE ((uint32_t)0x00000000U)
0639 #define HAL_OSPI_AUTOMATIC_STOP_ENABLE ((uint32_t)OCTOSPI_CR_APMS)
0640
0641
0642
0643
0644
0645
0646
0647
0648 #define HAL_OSPI_TIMEOUT_COUNTER_DISABLE ((uint32_t)0x00000000U)
0649 #define HAL_OSPI_TIMEOUT_COUNTER_ENABLE ((uint32_t)OCTOSPI_CR_TCEN)
0650
0651
0652
0653
0654
0655
0656
0657
0658 #define HAL_OSPI_FLAG_BUSY OCTOSPI_SR_BUSY
0659 #define HAL_OSPI_FLAG_TO OCTOSPI_SR_TOF
0660 #define HAL_OSPI_FLAG_SM OCTOSPI_SR_SMF
0661 #define HAL_OSPI_FLAG_FT OCTOSPI_SR_FTF
0662 #define HAL_OSPI_FLAG_TC OCTOSPI_SR_TCF
0663 #define HAL_OSPI_FLAG_TE OCTOSPI_SR_TEF
0664
0665
0666
0667
0668
0669
0670
0671
0672 #define HAL_OSPI_IT_TO OCTOSPI_CR_TOIE
0673 #define HAL_OSPI_IT_SM OCTOSPI_CR_SMIE
0674 #define HAL_OSPI_IT_FT OCTOSPI_CR_FTIE
0675 #define HAL_OSPI_IT_TC OCTOSPI_CR_TCIE
0676 #define HAL_OSPI_IT_TE OCTOSPI_CR_TEIE
0677
0678
0679
0680
0681
0682
0683
0684
0685 #define HAL_OSPI_TIMEOUT_DEFAULT_VALUE ((uint32_t)5000U)
0686
0687
0688
0689
0690
0691
0692
0693
0694 #define HAL_OSPIM_IOPORT_NONE ((uint32_t)0x00000000U)
0695 #define HAL_OSPIM_IOPORT_1_LOW ((uint32_t)(OCTOSPIM_PCR_IOLEN | 0x1U))
0696 #define HAL_OSPIM_IOPORT_1_HIGH ((uint32_t)(OCTOSPIM_PCR_IOHEN | 0x1U))
0697 #define HAL_OSPIM_IOPORT_2_LOW ((uint32_t)(OCTOSPIM_PCR_IOLEN | 0x2U))
0698 #define HAL_OSPIM_IOPORT_2_HIGH ((uint32_t)(OCTOSPIM_PCR_IOHEN | 0x2U))
0699 #define HAL_OSPIM_IOPORT_3_LOW ((uint32_t)(OCTOSPIM_PCR_IOLEN | 0x3U))
0700 #define HAL_OSPIM_IOPORT_3_HIGH ((uint32_t)(OCTOSPIM_PCR_IOHEN | 0x3U))
0701 #define HAL_OSPIM_IOPORT_4_LOW ((uint32_t)(OCTOSPIM_PCR_IOLEN | 0x4U))
0702 #define HAL_OSPIM_IOPORT_4_HIGH ((uint32_t)(OCTOSPIM_PCR_IOHEN | 0x4U))
0703 #define HAL_OSPIM_IOPORT_5_LOW ((uint32_t)(OCTOSPIM_PCR_IOLEN | 0x5U))
0704 #define HAL_OSPIM_IOPORT_5_HIGH ((uint32_t)(OCTOSPIM_PCR_IOHEN | 0x5U))
0705 #define HAL_OSPIM_IOPORT_6_LOW ((uint32_t)(OCTOSPIM_PCR_IOLEN | 0x6U))
0706 #define HAL_OSPIM_IOPORT_6_HIGH ((uint32_t)(OCTOSPIM_PCR_IOHEN | 0x6U))
0707 #define HAL_OSPIM_IOPORT_7_LOW ((uint32_t)(OCTOSPIM_PCR_IOLEN | 0x7U))
0708 #define HAL_OSPIM_IOPORT_7_HIGH ((uint32_t)(OCTOSPIM_PCR_IOHEN | 0x7U))
0709 #define HAL_OSPIM_IOPORT_8_LOW ((uint32_t)(OCTOSPIM_PCR_IOLEN | 0x8U))
0710 #define HAL_OSPIM_IOPORT_8_HIGH ((uint32_t)(OCTOSPIM_PCR_IOHEN | 0x8U))
0711
0712
0713
0714
0715
0716
0717
0718
0719
0720
0721
0722
0723
0724
0725
0726
0727 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U)
0728 #define __HAL_OSPI_RESET_HANDLE_STATE(__HANDLE__) do { \
0729 (__HANDLE__)->State = HAL_OSPI_STATE_RESET; \
0730 (__HANDLE__)->MspInitCallback = NULL; \
0731 (__HANDLE__)->MspDeInitCallback = NULL; \
0732 } while(0)
0733 #else
0734 #define __HAL_OSPI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_OSPI_STATE_RESET)
0735 #endif
0736
0737
0738
0739
0740
0741 #define __HAL_OSPI_ENABLE(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR, OCTOSPI_CR_EN)
0742
0743
0744
0745
0746
0747 #define __HAL_OSPI_DISABLE(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CR, OCTOSPI_CR_EN)
0748
0749
0750
0751
0752
0753
0754
0755
0756
0757
0758
0759
0760 #define __HAL_OSPI_ENABLE_IT(__HANDLE__, __INTERRUPT__) SET_BIT((__HANDLE__)->Instance->CR, (__INTERRUPT__))
0761
0762
0763
0764
0765
0766
0767
0768
0769
0770
0771
0772
0773
0774 #define __HAL_OSPI_DISABLE_IT(__HANDLE__, __INTERRUPT__) CLEAR_BIT((__HANDLE__)->Instance->CR, (__INTERRUPT__))
0775
0776
0777
0778
0779
0780
0781
0782
0783
0784
0785
0786
0787 #define __HAL_OSPI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (READ_BIT((__HANDLE__)->Instance->CR, (__INTERRUPT__))\
0788 == (__INTERRUPT__))
0789
0790
0791
0792
0793
0794
0795
0796
0797
0798
0799
0800
0801
0802
0803 #define __HAL_OSPI_GET_FLAG(__HANDLE__, __FLAG__) ((READ_BIT((__HANDLE__)->Instance->SR, (__FLAG__)) \
0804 != 0U) ? SET : RESET)
0805
0806
0807
0808
0809
0810
0811
0812
0813
0814
0815
0816 #define __HAL_OSPI_CLEAR_FLAG(__HANDLE__, __FLAG__) WRITE_REG((__HANDLE__)->Instance->FCR, (__FLAG__))
0817
0818
0819
0820
0821
0822
0823
0824
0825
0826
0827
0828
0829
0830
0831 HAL_StatusTypeDef HAL_OSPI_Init(OSPI_HandleTypeDef *hospi);
0832 void HAL_OSPI_MspInit(OSPI_HandleTypeDef *hospi);
0833 HAL_StatusTypeDef HAL_OSPI_DeInit(OSPI_HandleTypeDef *hospi);
0834 void HAL_OSPI_MspDeInit(OSPI_HandleTypeDef *hospi);
0835
0836
0837
0838
0839
0840
0841
0842
0843
0844
0845 void HAL_OSPI_IRQHandler(OSPI_HandleTypeDef *hospi);
0846
0847
0848 HAL_StatusTypeDef HAL_OSPI_Command(OSPI_HandleTypeDef *hospi, OSPI_RegularCmdTypeDef *cmd, uint32_t Timeout);
0849 HAL_StatusTypeDef HAL_OSPI_Command_IT(OSPI_HandleTypeDef *hospi, OSPI_RegularCmdTypeDef *cmd);
0850 HAL_StatusTypeDef HAL_OSPI_HyperbusCfg(OSPI_HandleTypeDef *hospi, OSPI_HyperbusCfgTypeDef *cfg, uint32_t Timeout);
0851 HAL_StatusTypeDef HAL_OSPI_HyperbusCmd(OSPI_HandleTypeDef *hospi, OSPI_HyperbusCmdTypeDef *cmd, uint32_t Timeout);
0852
0853
0854 HAL_StatusTypeDef HAL_OSPI_Transmit(OSPI_HandleTypeDef *hospi, uint8_t *pData, uint32_t Timeout);
0855 HAL_StatusTypeDef HAL_OSPI_Receive(OSPI_HandleTypeDef *hospi, uint8_t *pData, uint32_t Timeout);
0856 HAL_StatusTypeDef HAL_OSPI_Transmit_IT(OSPI_HandleTypeDef *hospi, uint8_t *pData);
0857 HAL_StatusTypeDef HAL_OSPI_Receive_IT(OSPI_HandleTypeDef *hospi, uint8_t *pData);
0858 HAL_StatusTypeDef HAL_OSPI_Transmit_DMA(OSPI_HandleTypeDef *hospi, uint8_t *pData);
0859 HAL_StatusTypeDef HAL_OSPI_Receive_DMA(OSPI_HandleTypeDef *hospi, uint8_t *pData);
0860
0861
0862 HAL_StatusTypeDef HAL_OSPI_AutoPolling(OSPI_HandleTypeDef *hospi, OSPI_AutoPollingTypeDef *cfg, uint32_t Timeout);
0863 HAL_StatusTypeDef HAL_OSPI_AutoPolling_IT(OSPI_HandleTypeDef *hospi, OSPI_AutoPollingTypeDef *cfg);
0864
0865
0866 HAL_StatusTypeDef HAL_OSPI_MemoryMapped(OSPI_HandleTypeDef *hospi, OSPI_MemoryMappedTypeDef *cfg);
0867
0868
0869 void HAL_OSPI_ErrorCallback(OSPI_HandleTypeDef *hospi);
0870 void HAL_OSPI_AbortCpltCallback(OSPI_HandleTypeDef *hospi);
0871 void HAL_OSPI_FifoThresholdCallback(OSPI_HandleTypeDef *hospi);
0872
0873
0874 void HAL_OSPI_CmdCpltCallback(OSPI_HandleTypeDef *hospi);
0875 void HAL_OSPI_RxCpltCallback(OSPI_HandleTypeDef *hospi);
0876 void HAL_OSPI_TxCpltCallback(OSPI_HandleTypeDef *hospi);
0877 void HAL_OSPI_RxHalfCpltCallback(OSPI_HandleTypeDef *hospi);
0878 void HAL_OSPI_TxHalfCpltCallback(OSPI_HandleTypeDef *hospi);
0879
0880
0881 void HAL_OSPI_StatusMatchCallback(OSPI_HandleTypeDef *hospi);
0882
0883
0884 void HAL_OSPI_TimeOutCallback(OSPI_HandleTypeDef *hospi);
0885
0886 #if defined (USE_HAL_OSPI_REGISTER_CALLBACKS) && (USE_HAL_OSPI_REGISTER_CALLBACKS == 1U)
0887
0888 HAL_StatusTypeDef HAL_OSPI_RegisterCallback(OSPI_HandleTypeDef *hospi, HAL_OSPI_CallbackIDTypeDef CallbackID,
0889 pOSPI_CallbackTypeDef pCallback);
0890 HAL_StatusTypeDef HAL_OSPI_UnRegisterCallback(OSPI_HandleTypeDef *hospi, HAL_OSPI_CallbackIDTypeDef CallbackID);
0891 #endif
0892
0893
0894
0895
0896
0897
0898
0899
0900 HAL_StatusTypeDef HAL_OSPI_Abort(OSPI_HandleTypeDef *hospi);
0901 HAL_StatusTypeDef HAL_OSPI_Abort_IT(OSPI_HandleTypeDef *hospi);
0902 HAL_StatusTypeDef HAL_OSPI_SetFifoThreshold(OSPI_HandleTypeDef *hospi, uint32_t Threshold);
0903 uint32_t HAL_OSPI_GetFifoThreshold(const OSPI_HandleTypeDef *hospi);
0904 HAL_StatusTypeDef HAL_OSPI_SetTimeout(OSPI_HandleTypeDef *hospi, uint32_t Timeout);
0905 uint32_t HAL_OSPI_GetError(const OSPI_HandleTypeDef *hospi);
0906 uint32_t HAL_OSPI_GetState(const OSPI_HandleTypeDef *hospi);
0907
0908
0909
0910
0911
0912
0913
0914
0915
0916 HAL_StatusTypeDef HAL_OSPIM_Config(OSPI_HandleTypeDef *hospi, OSPIM_CfgTypeDef *cfg, uint32_t Timeout);
0917
0918
0919
0920
0921
0922
0923
0924
0925
0926
0927
0928
0929
0930
0931 #define IS_OSPI_FIFO_THRESHOLD(THRESHOLD) (((THRESHOLD) >= 1U) && ((THRESHOLD) <= 32U))
0932
0933 #define IS_OSPI_DUALQUAD_MODE(MODE) (((MODE) == HAL_OSPI_DUALQUAD_DISABLE) || \
0934 ((MODE) == HAL_OSPI_DUALQUAD_ENABLE))
0935
0936 #define IS_OSPI_MEMORY_TYPE(TYPE) (((TYPE) == HAL_OSPI_MEMTYPE_MICRON) || \
0937 ((TYPE) == HAL_OSPI_MEMTYPE_MACRONIX) || \
0938 ((TYPE) == HAL_OSPI_MEMTYPE_APMEMORY) || \
0939 ((TYPE) == HAL_OSPI_MEMTYPE_MACRONIX_RAM) || \
0940 ((TYPE) == HAL_OSPI_MEMTYPE_HYPERBUS))
0941
0942 #define IS_OSPI_DEVICE_SIZE(SIZE) (((SIZE) >= 1U) && ((SIZE) <= 32U))
0943
0944 #define IS_OSPI_CS_HIGH_TIME(TIME) (((TIME) >= 1U) && ((TIME) <= 8U))
0945
0946 #define IS_OSPI_FREE_RUN_CLK(CLK) (((CLK) == HAL_OSPI_FREERUNCLK_DISABLE) || \
0947 ((CLK) == HAL_OSPI_FREERUNCLK_ENABLE))
0948
0949 #define IS_OSPI_CLOCK_MODE(MODE) (((MODE) == HAL_OSPI_CLOCK_MODE_0) || \
0950 ((MODE) == HAL_OSPI_CLOCK_MODE_3))
0951
0952 #define IS_OSPI_WRAP_SIZE(SIZE) (((SIZE) == HAL_OSPI_WRAP_NOT_SUPPORTED) || \
0953 ((SIZE) == HAL_OSPI_WRAP_16_BYTES) || \
0954 ((SIZE) == HAL_OSPI_WRAP_32_BYTES) || \
0955 ((SIZE) == HAL_OSPI_WRAP_64_BYTES) || \
0956 ((SIZE) == HAL_OSPI_WRAP_128_BYTES))
0957
0958 #define IS_OSPI_CLK_PRESCALER(PRESCALER) (((PRESCALER) >= 1U) && ((PRESCALER) <= 256U))
0959
0960 #define IS_OSPI_SAMPLE_SHIFTING(CYCLE) (((CYCLE) == HAL_OSPI_SAMPLE_SHIFTING_NONE) || \
0961 ((CYCLE) == HAL_OSPI_SAMPLE_SHIFTING_HALFCYCLE))
0962
0963 #define IS_OSPI_DHQC(CYCLE) (((CYCLE) == HAL_OSPI_DHQC_DISABLE) || \
0964 ((CYCLE) == HAL_OSPI_DHQC_ENABLE))
0965
0966 #define IS_OSPI_OPERATION_TYPE(TYPE) (((TYPE) == HAL_OSPI_OPTYPE_COMMON_CFG) || \
0967 ((TYPE) == HAL_OSPI_OPTYPE_READ_CFG) || \
0968 ((TYPE) == HAL_OSPI_OPTYPE_WRITE_CFG) || \
0969 ((TYPE) == HAL_OSPI_OPTYPE_WRAP_CFG))
0970
0971 #define IS_OSPI_FLASH_ID(FLASHID) (((FLASHID) == HAL_OSPI_FLASH_ID_1) || \
0972 ((FLASHID) == HAL_OSPI_FLASH_ID_2))
0973
0974 #define IS_OSPI_INSTRUCTION_MODE(MODE) (((MODE) == HAL_OSPI_INSTRUCTION_NONE) || \
0975 ((MODE) == HAL_OSPI_INSTRUCTION_1_LINE) || \
0976 ((MODE) == HAL_OSPI_INSTRUCTION_2_LINES) || \
0977 ((MODE) == HAL_OSPI_INSTRUCTION_4_LINES) || \
0978 ((MODE) == HAL_OSPI_INSTRUCTION_8_LINES))
0979
0980 #define IS_OSPI_INSTRUCTION_SIZE(SIZE) (((SIZE) == HAL_OSPI_INSTRUCTION_8_BITS) || \
0981 ((SIZE) == HAL_OSPI_INSTRUCTION_16_BITS) || \
0982 ((SIZE) == HAL_OSPI_INSTRUCTION_24_BITS) || \
0983 ((SIZE) == HAL_OSPI_INSTRUCTION_32_BITS))
0984
0985 #define IS_OSPI_INSTRUCTION_DTR_MODE(MODE) (((MODE) == HAL_OSPI_INSTRUCTION_DTR_DISABLE) || \
0986 ((MODE) == HAL_OSPI_INSTRUCTION_DTR_ENABLE))
0987
0988 #define IS_OSPI_ADDRESS_MODE(MODE) (((MODE) == HAL_OSPI_ADDRESS_NONE) || \
0989 ((MODE) == HAL_OSPI_ADDRESS_1_LINE) || \
0990 ((MODE) == HAL_OSPI_ADDRESS_2_LINES) || \
0991 ((MODE) == HAL_OSPI_ADDRESS_4_LINES) || \
0992 ((MODE) == HAL_OSPI_ADDRESS_8_LINES))
0993
0994 #define IS_OSPI_ADDRESS_SIZE(SIZE) (((SIZE) == HAL_OSPI_ADDRESS_8_BITS) || \
0995 ((SIZE) == HAL_OSPI_ADDRESS_16_BITS) || \
0996 ((SIZE) == HAL_OSPI_ADDRESS_24_BITS) || \
0997 ((SIZE) == HAL_OSPI_ADDRESS_32_BITS))
0998
0999 #define IS_OSPI_ADDRESS_DTR_MODE(MODE) (((MODE) == HAL_OSPI_ADDRESS_DTR_DISABLE) || \
1000 ((MODE) == HAL_OSPI_ADDRESS_DTR_ENABLE))
1001
1002 #define IS_OSPI_ALT_BYTES_MODE(MODE) (((MODE) == HAL_OSPI_ALTERNATE_BYTES_NONE) || \
1003 ((MODE) == HAL_OSPI_ALTERNATE_BYTES_1_LINE) || \
1004 ((MODE) == HAL_OSPI_ALTERNATE_BYTES_2_LINES) || \
1005 ((MODE) == HAL_OSPI_ALTERNATE_BYTES_4_LINES) || \
1006 ((MODE) == HAL_OSPI_ALTERNATE_BYTES_8_LINES))
1007
1008 #define IS_OSPI_ALT_BYTES_SIZE(SIZE) (((SIZE) == HAL_OSPI_ALTERNATE_BYTES_8_BITS) || \
1009 ((SIZE) == HAL_OSPI_ALTERNATE_BYTES_16_BITS) || \
1010 ((SIZE) == HAL_OSPI_ALTERNATE_BYTES_24_BITS) || \
1011 ((SIZE) == HAL_OSPI_ALTERNATE_BYTES_32_BITS))
1012
1013 #define IS_OSPI_ALT_BYTES_DTR_MODE(MODE) (((MODE) == HAL_OSPI_ALTERNATE_BYTES_DTR_DISABLE) || \
1014 ((MODE) == HAL_OSPI_ALTERNATE_BYTES_DTR_ENABLE))
1015
1016 #define IS_OSPI_DATA_MODE(MODE) (((MODE) == HAL_OSPI_DATA_NONE) || \
1017 ((MODE) == HAL_OSPI_DATA_1_LINE) || \
1018 ((MODE) == HAL_OSPI_DATA_2_LINES) || \
1019 ((MODE) == HAL_OSPI_DATA_4_LINES) || \
1020 ((MODE) == HAL_OSPI_DATA_8_LINES))
1021
1022 #define IS_OSPI_NUMBER_DATA(NUMBER) ((NUMBER) >= 1U)
1023
1024 #define IS_OSPI_DATA_DTR_MODE(MODE) (((MODE) == HAL_OSPI_DATA_DTR_DISABLE) || \
1025 ((MODE) == HAL_OSPI_DATA_DTR_ENABLE))
1026
1027 #define IS_OSPI_DUMMY_CYCLES(NUMBER) ((NUMBER) <= 31U)
1028
1029 #define IS_OSPI_DQS_MODE(MODE) (((MODE) == HAL_OSPI_DQS_DISABLE) || \
1030 ((MODE) == HAL_OSPI_DQS_ENABLE))
1031
1032 #define IS_OSPI_SIOO_MODE(MODE) (((MODE) == HAL_OSPI_SIOO_INST_EVERY_CMD) || \
1033 ((MODE) == HAL_OSPI_SIOO_INST_ONLY_FIRST_CMD))
1034
1035 #define IS_OSPI_RW_RECOVERY_TIME(NUMBER) ((NUMBER) <= 255U)
1036
1037 #define IS_OSPI_ACCESS_TIME(NUMBER) ((NUMBER) <= 255U)
1038
1039 #define IS_OSPI_WRITE_ZERO_LATENCY(MODE) (((MODE) == HAL_OSPI_LATENCY_ON_WRITE) || \
1040 ((MODE) == HAL_OSPI_NO_LATENCY_ON_WRITE))
1041
1042 #define IS_OSPI_LATENCY_MODE(MODE) (((MODE) == HAL_OSPI_VARIABLE_LATENCY) || \
1043 ((MODE) == HAL_OSPI_FIXED_LATENCY))
1044
1045 #define IS_OSPI_ADDRESS_SPACE(SPACE) (((SPACE) == HAL_OSPI_MEMORY_ADDRESS_SPACE) || \
1046 ((SPACE) == HAL_OSPI_REGISTER_ADDRESS_SPACE))
1047
1048 #define IS_OSPI_MATCH_MODE(MODE) (((MODE) == HAL_OSPI_MATCH_MODE_AND) || \
1049 ((MODE) == HAL_OSPI_MATCH_MODE_OR))
1050
1051 #define IS_OSPI_AUTOMATIC_STOP(MODE) (((MODE) == HAL_OSPI_AUTOMATIC_STOP_ENABLE) || \
1052 ((MODE) == HAL_OSPI_AUTOMATIC_STOP_DISABLE))
1053
1054 #define IS_OSPI_INTERVAL(INTERVAL) ((INTERVAL) <= 0xFFFFU)
1055
1056 #define IS_OSPI_STATUS_BYTES_SIZE(SIZE) (((SIZE) >= 1U) && ((SIZE) <= 4U))
1057
1058 #define IS_OSPI_TIMEOUT_ACTIVATION(MODE) (((MODE) == HAL_OSPI_TIMEOUT_COUNTER_DISABLE) || \
1059 ((MODE) == HAL_OSPI_TIMEOUT_COUNTER_ENABLE))
1060
1061 #define IS_OSPI_TIMEOUT_PERIOD(PERIOD) ((PERIOD) <= 0xFFFFU)
1062
1063 #define IS_OSPI_CS_BOUNDARY(BOUNDARY) ((BOUNDARY) <= 31U)
1064
1065 #define IS_OSPI_DLYBYP(MODE) (((MODE) == HAL_OSPI_DELAY_BLOCK_USED) || \
1066 ((MODE) == HAL_OSPI_DELAY_BLOCK_BYPASSED))
1067
1068 #define IS_OSPI_MAXTRAN(NB_BYTES) ((NB_BYTES) <= 255U)
1069
1070 #define IS_OSPIM_PORT(NUMBER) (((NUMBER) >= 1U) && ((NUMBER) <= 8U))
1071
1072 #define IS_OSPIM_DQS_PORT(NUMBER) ((NUMBER) <= 8U)
1073
1074 #define IS_OSPIM_IO_PORT(PORT) (((PORT) == HAL_OSPIM_IOPORT_NONE) || \
1075 ((PORT) == HAL_OSPIM_IOPORT_1_LOW) || \
1076 ((PORT) == HAL_OSPIM_IOPORT_1_HIGH) || \
1077 ((PORT) == HAL_OSPIM_IOPORT_2_LOW) || \
1078 ((PORT) == HAL_OSPIM_IOPORT_2_HIGH) || \
1079 ((PORT) == HAL_OSPIM_IOPORT_3_LOW) || \
1080 ((PORT) == HAL_OSPIM_IOPORT_3_HIGH) || \
1081 ((PORT) == HAL_OSPIM_IOPORT_4_LOW) || \
1082 ((PORT) == HAL_OSPIM_IOPORT_4_HIGH) || \
1083 ((PORT) == HAL_OSPIM_IOPORT_5_LOW) || \
1084 ((PORT) == HAL_OSPIM_IOPORT_5_HIGH) || \
1085 ((PORT) == HAL_OSPIM_IOPORT_6_LOW) || \
1086 ((PORT) == HAL_OSPIM_IOPORT_6_HIGH) || \
1087 ((PORT) == HAL_OSPIM_IOPORT_7_LOW) || \
1088 ((PORT) == HAL_OSPIM_IOPORT_7_HIGH) || \
1089 ((PORT) == HAL_OSPIM_IOPORT_8_LOW) || \
1090 ((PORT) == HAL_OSPIM_IOPORT_8_HIGH))
1091
1092 #define IS_OSPIM_REQ2ACKTIME(TIME) (((TIME) >= 1U) && ((TIME) <= 256U))
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107 #endif
1108
1109 #ifdef __cplusplus
1110 }
1111 #endif
1112
1113 #endif