39 #ifndef __STM32F4xx_HAL_QSPI_H 40 #define __STM32F4xx_HAL_QSPI_H 46 #if defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) || \ 70 uint32_t ClockPrescaler;
73 uint32_t FifoThreshold;
76 uint32_t SampleShifting;
86 uint32_t ChipSelectHighTime;
105 HAL_QSPI_STATE_RESET = 0x00U,
106 HAL_QSPI_STATE_READY = 0x01U,
107 HAL_QSPI_STATE_BUSY = 0x02U,
108 HAL_QSPI_STATE_BUSY_INDIRECT_TX = 0x12U,
109 HAL_QSPI_STATE_BUSY_INDIRECT_RX = 0x22U,
110 HAL_QSPI_STATE_BUSY_AUTO_POLLING = 0x42U,
111 HAL_QSPI_STATE_BUSY_MEM_MAPPED = 0x82U,
112 HAL_QSPI_STATE_ABORT = 0x08U,
113 HAL_QSPI_STATE_ERROR = 0x04U
114 }HAL_QSPI_StateTypeDef;
122 QSPI_InitTypeDef Init;
124 __IO uint16_t TxXferSize;
125 __IO uint16_t TxXferCount;
127 __IO uint16_t RxXferSize;
128 __IO uint16_t RxXferCount;
131 __IO HAL_QSPI_StateTypeDef State;
132 __IO uint32_t ErrorCode;
141 uint32_t Instruction;
145 uint32_t AlternateBytes;
147 uint32_t AddressSize;
149 uint32_t AlternateBytesSize;
151 uint32_t DummyCycles;
153 uint32_t InstructionMode;
155 uint32_t AddressMode;
157 uint32_t AlternateByteMode;
166 uint32_t DdrHoldHalfCycle;
171 }QSPI_CommandTypeDef;
184 uint32_t StatusBytesSize;
188 uint32_t AutomaticStop;
190 }QSPI_AutoPollingTypeDef;
197 uint32_t TimeOutPeriod;
199 uint32_t TimeOutActivation;
201 }QSPI_MemoryMappedTypeDef;
213 #define HAL_QSPI_ERROR_NONE ((uint32_t)0x00000000U) 214 #define HAL_QSPI_ERROR_TIMEOUT ((uint32_t)0x00000001U) 215 #define HAL_QSPI_ERROR_TRANSFER ((uint32_t)0x00000002U) 216 #define HAL_QSPI_ERROR_DMA ((uint32_t)0x00000004U) 217 #define HAL_QSPI_ERROR_INVALID_PARAM ((uint32_t)0x00000008U) 225 #define QSPI_SAMPLE_SHIFTING_NONE ((uint32_t)0x00000000U) 226 #define QSPI_SAMPLE_SHIFTING_HALFCYCLE ((uint32_t)QUADSPI_CR_SSHIFT) 234 #define QSPI_CS_HIGH_TIME_1_CYCLE ((uint32_t)0x00000000U) 235 #define QSPI_CS_HIGH_TIME_2_CYCLE ((uint32_t)QUADSPI_DCR_CSHT_0) 236 #define QSPI_CS_HIGH_TIME_3_CYCLE ((uint32_t)QUADSPI_DCR_CSHT_1) 237 #define QSPI_CS_HIGH_TIME_4_CYCLE ((uint32_t)QUADSPI_DCR_CSHT_0 | QUADSPI_DCR_CSHT_1) 238 #define QSPI_CS_HIGH_TIME_5_CYCLE ((uint32_t)QUADSPI_DCR_CSHT_2) 239 #define QSPI_CS_HIGH_TIME_6_CYCLE ((uint32_t)QUADSPI_DCR_CSHT_2 | QUADSPI_DCR_CSHT_0) 240 #define QSPI_CS_HIGH_TIME_7_CYCLE ((uint32_t)QUADSPI_DCR_CSHT_2 | QUADSPI_DCR_CSHT_1) 241 #define QSPI_CS_HIGH_TIME_8_CYCLE ((uint32_t)QUADSPI_DCR_CSHT) 249 #define QSPI_CLOCK_MODE_0 ((uint32_t)0x00000000U) 250 #define QSPI_CLOCK_MODE_3 ((uint32_t)QUADSPI_DCR_CKMODE) 258 #define QSPI_FLASH_ID_1 ((uint32_t)0x00000000U) 259 #define QSPI_FLASH_ID_2 ((uint32_t)QUADSPI_CR_FSEL) 267 #define QSPI_DUALFLASH_ENABLE ((uint32_t)QUADSPI_CR_DFM) 268 #define QSPI_DUALFLASH_DISABLE ((uint32_t)0x00000000U) 276 #define QSPI_ADDRESS_8_BITS ((uint32_t)0x00000000U) 277 #define QSPI_ADDRESS_16_BITS ((uint32_t)QUADSPI_CCR_ADSIZE_0) 278 #define QSPI_ADDRESS_24_BITS ((uint32_t)QUADSPI_CCR_ADSIZE_1) 279 #define QSPI_ADDRESS_32_BITS ((uint32_t)QUADSPI_CCR_ADSIZE) 287 #define QSPI_ALTERNATE_BYTES_8_BITS ((uint32_t)0x00000000U) 288 #define QSPI_ALTERNATE_BYTES_16_BITS ((uint32_t)QUADSPI_CCR_ABSIZE_0) 289 #define QSPI_ALTERNATE_BYTES_24_BITS ((uint32_t)QUADSPI_CCR_ABSIZE_1) 290 #define QSPI_ALTERNATE_BYTES_32_BITS ((uint32_t)QUADSPI_CCR_ABSIZE) 298 #define QSPI_INSTRUCTION_NONE ((uint32_t)0x00000000U) 299 #define QSPI_INSTRUCTION_1_LINE ((uint32_t)QUADSPI_CCR_IMODE_0) 300 #define QSPI_INSTRUCTION_2_LINES ((uint32_t)QUADSPI_CCR_IMODE_1) 301 #define QSPI_INSTRUCTION_4_LINES ((uint32_t)QUADSPI_CCR_IMODE) 309 #define QSPI_ADDRESS_NONE ((uint32_t)0x00000000U) 310 #define QSPI_ADDRESS_1_LINE ((uint32_t)QUADSPI_CCR_ADMODE_0) 311 #define QSPI_ADDRESS_2_LINES ((uint32_t)QUADSPI_CCR_ADMODE_1) 312 #define QSPI_ADDRESS_4_LINES ((uint32_t)QUADSPI_CCR_ADMODE) 320 #define QSPI_ALTERNATE_BYTES_NONE ((uint32_t)0x00000000U) 321 #define QSPI_ALTERNATE_BYTES_1_LINE ((uint32_t)QUADSPI_CCR_ABMODE_0) 322 #define QSPI_ALTERNATE_BYTES_2_LINES ((uint32_t)QUADSPI_CCR_ABMODE_1) 323 #define QSPI_ALTERNATE_BYTES_4_LINES ((uint32_t)QUADSPI_CCR_ABMODE) 331 #define QSPI_DATA_NONE ((uint32_t)0x00000000U) 332 #define QSPI_DATA_1_LINE ((uint32_t)QUADSPI_CCR_DMODE_0) 333 #define QSPI_DATA_2_LINES ((uint32_t)QUADSPI_CCR_DMODE_1) 334 #define QSPI_DATA_4_LINES ((uint32_t)QUADSPI_CCR_DMODE) 342 #define QSPI_DDR_MODE_DISABLE ((uint32_t)0x00000000U) 343 #define QSPI_DDR_MODE_ENABLE ((uint32_t)QUADSPI_CCR_DDRM) 351 #define QSPI_DDR_HHC_ANALOG_DELAY ((uint32_t)0x00000000U) 352 #define QSPI_DDR_HHC_HALF_CLK_DELAY ((uint32_t)QUADSPI_CCR_DHHC) 360 #define QSPI_SIOO_INST_EVERY_CMD ((uint32_t)0x00000000U) 361 #define QSPI_SIOO_INST_ONLY_FIRST_CMD ((uint32_t)QUADSPI_CCR_SIOO) 369 #define QSPI_MATCH_MODE_AND ((uint32_t)0x00000000U) 370 #define QSPI_MATCH_MODE_OR ((uint32_t)QUADSPI_CR_PMM) 378 #define QSPI_AUTOMATIC_STOP_DISABLE ((uint32_t)0x00000000U) 379 #define QSPI_AUTOMATIC_STOP_ENABLE ((uint32_t)QUADSPI_CR_APMS) 387 #define QSPI_TIMEOUT_COUNTER_DISABLE ((uint32_t)0x00000000U) 388 #define QSPI_TIMEOUT_COUNTER_ENABLE ((uint32_t)QUADSPI_CR_TCEN) 396 #define QSPI_FLAG_BUSY QUADSPI_SR_BUSY 397 #define QSPI_FLAG_TO QUADSPI_SR_TOF 398 #define QSPI_FLAG_SM QUADSPI_SR_SMF 399 #define QSPI_FLAG_FT QUADSPI_SR_FTF 400 #define QSPI_FLAG_TC QUADSPI_SR_TCF 401 #define QSPI_FLAG_TE QUADSPI_SR_TEF 409 #define QSPI_IT_TO QUADSPI_CR_TOIE 410 #define QSPI_IT_SM QUADSPI_CR_SMIE 411 #define QSPI_IT_FT QUADSPI_CR_FTIE 412 #define QSPI_IT_TC QUADSPI_CR_TCIE 413 #define QSPI_IT_TE QUADSPI_CR_TEIE 421 #define HAL_QPSI_TIMEOUT_DEFAULT_VALUE ((uint32_t)5000U) 439 #define __HAL_QSPI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_QSPI_STATE_RESET) 445 #define __HAL_QSPI_ENABLE(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR, QUADSPI_CR_EN) 451 #define __HAL_QSPI_DISABLE(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CR, QUADSPI_CR_EN) 464 #define __HAL_QSPI_ENABLE_IT(__HANDLE__, __INTERRUPT__) SET_BIT((__HANDLE__)->Instance->CR, (__INTERRUPT__)) 478 #define __HAL_QSPI_DISABLE_IT(__HANDLE__, __INTERRUPT__) CLEAR_BIT((__HANDLE__)->Instance->CR, (__INTERRUPT__)) 491 #define __HAL_QSPI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (READ_BIT((__HANDLE__)->Instance->CR, (__INTERRUPT__)) == (__INTERRUPT__)) 506 #define __HAL_QSPI_GET_FLAG(__HANDLE__, __FLAG__) (READ_BIT((__HANDLE__)->Instance->SR, (__FLAG__)) != 0U) 518 #define __HAL_QSPI_CLEAR_FLAG(__HANDLE__, __FLAG__) WRITE_REG((__HANDLE__)->Instance->FCR, (__FLAG__)) 534 void HAL_QSPI_MspInit (QSPI_HandleTypeDef *hqspi);
535 void HAL_QSPI_MspDeInit(QSPI_HandleTypeDef *hqspi);
545 void HAL_QSPI_IRQHandler(QSPI_HandleTypeDef *hqspi);
548 HAL_StatusTypeDef HAL_QSPI_Command (QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, uint32_t Timeout);
549 HAL_StatusTypeDef HAL_QSPI_Transmit (QSPI_HandleTypeDef *hqspi, uint8_t *pData, uint32_t Timeout);
550 HAL_StatusTypeDef HAL_QSPI_Receive (QSPI_HandleTypeDef *hqspi, uint8_t *pData, uint32_t Timeout);
551 HAL_StatusTypeDef HAL_QSPI_Command_IT (QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd);
552 HAL_StatusTypeDef HAL_QSPI_Transmit_IT (QSPI_HandleTypeDef *hqspi, uint8_t *pData);
553 HAL_StatusTypeDef HAL_QSPI_Receive_IT (QSPI_HandleTypeDef *hqspi, uint8_t *pData);
554 HAL_StatusTypeDef HAL_QSPI_Transmit_DMA (QSPI_HandleTypeDef *hqspi, uint8_t *pData);
555 HAL_StatusTypeDef HAL_QSPI_Receive_DMA (QSPI_HandleTypeDef *hqspi, uint8_t *pData);
558 HAL_StatusTypeDef HAL_QSPI_AutoPolling (QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg, uint32_t Timeout);
559 HAL_StatusTypeDef HAL_QSPI_AutoPolling_IT(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg);
562 HAL_StatusTypeDef HAL_QSPI_MemoryMapped(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_MemoryMappedTypeDef *cfg);
571 void HAL_QSPI_ErrorCallback (QSPI_HandleTypeDef *hqspi);
572 void HAL_QSPI_AbortCpltCallback (QSPI_HandleTypeDef *hqspi);
573 void HAL_QSPI_FifoThresholdCallback(QSPI_HandleTypeDef *hqspi);
576 void HAL_QSPI_CmdCpltCallback (QSPI_HandleTypeDef *hqspi);
577 void HAL_QSPI_RxCpltCallback (QSPI_HandleTypeDef *hqspi);
578 void HAL_QSPI_TxCpltCallback (QSPI_HandleTypeDef *hqspi);
579 void HAL_QSPI_RxHalfCpltCallback (QSPI_HandleTypeDef *hqspi);
580 void HAL_QSPI_TxHalfCpltCallback (QSPI_HandleTypeDef *hqspi);
583 void HAL_QSPI_StatusMatchCallback (QSPI_HandleTypeDef *hqspi);
586 void HAL_QSPI_TimeOutCallback (QSPI_HandleTypeDef *hqspi);
595 HAL_QSPI_StateTypeDef HAL_QSPI_GetState (QSPI_HandleTypeDef *hqspi);
596 uint32_t HAL_QSPI_GetError (QSPI_HandleTypeDef *hqspi);
599 void HAL_QSPI_SetTimeout (QSPI_HandleTypeDef *hqspi, uint32_t Timeout);
600 HAL_StatusTypeDef HAL_QSPI_SetFifoThreshold(QSPI_HandleTypeDef *hqspi, uint32_t Threshold);
601 uint32_t HAL_QSPI_GetFifoThreshold(QSPI_HandleTypeDef *hqspi);
613 #define IS_QSPI_CLOCK_PRESCALER(PRESCALER) ((PRESCALER) <= 0xFFU) 621 #define IS_QSPI_FIFO_THRESHOLD(THR) (((THR) > 0U) && ((THR) <= 32U)) 626 #define IS_QSPI_SSHIFT(SSHIFT) (((SSHIFT) == QSPI_SAMPLE_SHIFTING_NONE) || \ 627 ((SSHIFT) == QSPI_SAMPLE_SHIFTING_HALFCYCLE)) 632 #define IS_QSPI_FLASH_SIZE(FSIZE) (((FSIZE) <= 31U)) 637 #define IS_QSPI_CS_HIGH_TIME(CSHTIME) (((CSHTIME) == QSPI_CS_HIGH_TIME_1_CYCLE) || \ 638 ((CSHTIME) == QSPI_CS_HIGH_TIME_2_CYCLE) || \ 639 ((CSHTIME) == QSPI_CS_HIGH_TIME_3_CYCLE) || \ 640 ((CSHTIME) == QSPI_CS_HIGH_TIME_4_CYCLE) || \ 641 ((CSHTIME) == QSPI_CS_HIGH_TIME_5_CYCLE) || \ 642 ((CSHTIME) == QSPI_CS_HIGH_TIME_6_CYCLE) || \ 643 ((CSHTIME) == QSPI_CS_HIGH_TIME_7_CYCLE) || \ 644 ((CSHTIME) == QSPI_CS_HIGH_TIME_8_CYCLE)) 646 #define IS_QSPI_CLOCK_MODE(CLKMODE) (((CLKMODE) == QSPI_CLOCK_MODE_0) || \ 647 ((CLKMODE) == QSPI_CLOCK_MODE_3)) 649 #define IS_QSPI_FLASH_ID(FLA) (((FLA) == QSPI_FLASH_ID_1) || \ 650 ((FLA) == QSPI_FLASH_ID_2)) 652 #define IS_QSPI_DUAL_FLASH_MODE(MODE) (((MODE) == QSPI_DUALFLASH_ENABLE) || \ 653 ((MODE) == QSPI_DUALFLASH_DISABLE)) 659 #define IS_QSPI_INSTRUCTION(INSTRUCTION) ((INSTRUCTION) <= 0xFFU) 664 #define IS_QSPI_ADDRESS_SIZE(ADDR_SIZE) (((ADDR_SIZE) == QSPI_ADDRESS_8_BITS) || \ 665 ((ADDR_SIZE) == QSPI_ADDRESS_16_BITS) || \ 666 ((ADDR_SIZE) == QSPI_ADDRESS_24_BITS) || \ 667 ((ADDR_SIZE) == QSPI_ADDRESS_32_BITS)) 669 #define IS_QSPI_ALTERNATE_BYTES_SIZE(SIZE) (((SIZE) == QSPI_ALTERNATE_BYTES_8_BITS) || \ 670 ((SIZE) == QSPI_ALTERNATE_BYTES_16_BITS) || \ 671 ((SIZE) == QSPI_ALTERNATE_BYTES_24_BITS) || \ 672 ((SIZE) == QSPI_ALTERNATE_BYTES_32_BITS)) 678 #define IS_QSPI_DUMMY_CYCLES(DCY) ((DCY) <= 31U) 683 #define IS_QSPI_INSTRUCTION_MODE(MODE) (((MODE) == QSPI_INSTRUCTION_NONE) || \ 684 ((MODE) == QSPI_INSTRUCTION_1_LINE) || \ 685 ((MODE) == QSPI_INSTRUCTION_2_LINES) || \ 686 ((MODE) == QSPI_INSTRUCTION_4_LINES)) 688 #define IS_QSPI_ADDRESS_MODE(MODE) (((MODE) == QSPI_ADDRESS_NONE) || \ 689 ((MODE) == QSPI_ADDRESS_1_LINE) || \ 690 ((MODE) == QSPI_ADDRESS_2_LINES) || \ 691 ((MODE) == QSPI_ADDRESS_4_LINES)) 693 #define IS_QSPI_ALTERNATE_BYTES_MODE(MODE) (((MODE) == QSPI_ALTERNATE_BYTES_NONE) || \ 694 ((MODE) == QSPI_ALTERNATE_BYTES_1_LINE) || \ 695 ((MODE) == QSPI_ALTERNATE_BYTES_2_LINES) || \ 696 ((MODE) == QSPI_ALTERNATE_BYTES_4_LINES)) 698 #define IS_QSPI_DATA_MODE(MODE) (((MODE) == QSPI_DATA_NONE) || \ 699 ((MODE) == QSPI_DATA_1_LINE) || \ 700 ((MODE) == QSPI_DATA_2_LINES) || \ 701 ((MODE) == QSPI_DATA_4_LINES)) 703 #define IS_QSPI_DDR_MODE(DDR_MODE) (((DDR_MODE) == QSPI_DDR_MODE_DISABLE) || \ 704 ((DDR_MODE) == QSPI_DDR_MODE_ENABLE)) 706 #define IS_QSPI_DDR_HHC(DDR_HHC) (((DDR_HHC) == QSPI_DDR_HHC_ANALOG_DELAY) || \ 707 ((DDR_HHC) == QSPI_DDR_HHC_HALF_CLK_DELAY)) 709 #define IS_QSPI_SIOO_MODE(SIOO_MODE) (((SIOO_MODE) == QSPI_SIOO_INST_EVERY_CMD) || \ 710 ((SIOO_MODE) == QSPI_SIOO_INST_ONLY_FIRST_CMD)) 715 #define IS_QSPI_INTERVAL(INTERVAL) ((INTERVAL) <= QUADSPI_PIR_INTERVAL) 723 #define IS_QSPI_STATUS_BYTES_SIZE(SIZE) (((SIZE) >= 1U) && ((SIZE) <= 4U)) 727 #define IS_QSPI_MATCH_MODE(MODE) (((MODE) == QSPI_MATCH_MODE_AND) || \ 728 ((MODE) == QSPI_MATCH_MODE_OR)) 730 #define IS_QSPI_AUTOMATIC_STOP(APMS) (((APMS) == QSPI_AUTOMATIC_STOP_DISABLE) || \ 731 ((APMS) == QSPI_AUTOMATIC_STOP_ENABLE)) 733 #define IS_QSPI_TIMEOUT_ACTIVATION(TCEN) (((TCEN) == QSPI_TIMEOUT_COUNTER_DISABLE) || \ 734 ((TCEN) == QSPI_TIMEOUT_COUNTER_ENABLE)) 739 #define IS_QSPI_TIMEOUT_PERIOD(PERIOD) ((PERIOD) <= 0xFFFFU) 744 #define IS_QSPI_GET_FLAG(FLAG) (((FLAG) == QSPI_FLAG_BUSY) || \ 745 ((FLAG) == QSPI_FLAG_TO) || \ 746 ((FLAG) == QSPI_FLAG_SM) || \ 747 ((FLAG) == QSPI_FLAG_FT) || \ 748 ((FLAG) == QSPI_FLAG_TC) || \ 749 ((FLAG) == QSPI_FLAG_TE)) 751 #define IS_QSPI_IT(IT) ((((IT) & (uint32_t)0xFFE0FFFFU) == 0x00000000U) && ((IT) != 0x00000000U)) This file contains HAL common defines, enumeration, macros and structures definitions.
QUAD Serial Peripheral Interface.
Definition: stm32f412rx.h:645
HAL_StatusTypeDef
HAL Status structures definition.
Definition: stm32f4xx_hal_def.h:57
#define __IO
Definition: core_cm0.h:213
HAL_LockTypeDef
HAL Lock structures definition.
Definition: stm32f4xx_hal_def.h:68
DMA handle Structure definition.
Definition: stm32f4xx_hal_dma.h:157