Initial commit
This commit is contained in:
		
							
								
								
									
										750
									
								
								Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_qspi.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										750
									
								
								Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_qspi.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,750 @@ | ||||
| /** | ||||
|   ****************************************************************************** | ||||
|   * @file    stm32f7xx_hal_qspi.h | ||||
|   * @author  MCD Application Team | ||||
|   * @brief   Header file of QSPI HAL module. | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * Copyright (c) 2017 STMicroelectronics. | ||||
|   * All rights reserved. | ||||
|   * | ||||
|   * This software is licensed under terms that can be found in the LICENSE file | ||||
|   * in the root directory of this software component. | ||||
|   * If no LICENSE file comes with this software, it is provided AS-IS. | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
|  | ||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | ||||
| #ifndef STM32F7xx_HAL_QSPI_H | ||||
| #define STM32F7xx_HAL_QSPI_H | ||||
|  | ||||
| #ifdef __cplusplus | ||||
|  extern "C" { | ||||
| #endif | ||||
|  | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| #include "stm32f7xx_hal_def.h" | ||||
|  | ||||
| #if defined(QUADSPI) | ||||
|  | ||||
| /** @addtogroup STM32F7xx_HAL_Driver | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup QSPI | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /* Exported types ------------------------------------------------------------*/ | ||||
| /** @defgroup QSPI_Exported_Types QSPI Exported Types | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @brief  QSPI Init structure definition | ||||
|   */ | ||||
| typedef struct | ||||
| { | ||||
|   uint32_t ClockPrescaler;     /* Specifies the prescaler factor for generating clock based on the AHB clock. | ||||
|                                   This parameter can be a number between 0 and 255 */ | ||||
|   uint32_t FifoThreshold;      /* Specifies the threshold number of bytes in the FIFO (used only in indirect mode) | ||||
|                                   This parameter can be a value between 1 and 32 */ | ||||
|   uint32_t SampleShifting;     /* Specifies the Sample Shift. The data is sampled 1/2 clock cycle delay later to | ||||
|                                   take in account external signal delays. (It should be QSPI_SAMPLE_SHIFTING_NONE in DDR mode) | ||||
|                                   This parameter can be a value of @ref QSPI_SampleShifting */ | ||||
|   uint32_t FlashSize;          /* Specifies the Flash Size. FlashSize+1 is effectively the number of address bits | ||||
|                                   required to address the flash memory. The flash capacity can be up to 4GB | ||||
|                                   (addressed using 32 bits) in indirect mode, but the addressable space in | ||||
|                                   memory-mapped mode is limited to 256MB | ||||
|                                   This parameter can be a number between 0 and 31 */ | ||||
|   uint32_t ChipSelectHighTime; /* Specifies the Chip Select High Time. ChipSelectHighTime+1 defines the minimum number | ||||
|                                   of clock cycles which the chip select must remain high between commands. | ||||
|                                   This parameter can be a value of @ref QSPI_ChipSelectHighTime */ | ||||
|   uint32_t ClockMode;          /* Specifies the Clock Mode. It indicates the level that clock takes between commands. | ||||
|                                   This parameter can be a value of @ref QSPI_ClockMode */ | ||||
|   uint32_t FlashID;            /* Specifies the Flash which will be used, | ||||
|                                   This parameter can be a value of @ref QSPI_Flash_Select */ | ||||
|   uint32_t DualFlash;          /* Specifies the Dual Flash Mode State | ||||
|                                   This parameter can be a value of @ref QSPI_DualFlash_Mode */ | ||||
| }QSPI_InitTypeDef; | ||||
|  | ||||
| /** | ||||
|   * @brief HAL QSPI State structures definition | ||||
|   */ | ||||
| typedef enum | ||||
| { | ||||
|   HAL_QSPI_STATE_RESET             = 0x00U,    /*!< Peripheral not initialized                            */ | ||||
|   HAL_QSPI_STATE_READY             = 0x01U,    /*!< Peripheral initialized and ready for use              */ | ||||
|   HAL_QSPI_STATE_BUSY              = 0x02U,    /*!< Peripheral in indirect mode and busy                  */ | ||||
|   HAL_QSPI_STATE_BUSY_INDIRECT_TX  = 0x12U,    /*!< Peripheral in indirect mode with transmission ongoing */ | ||||
|   HAL_QSPI_STATE_BUSY_INDIRECT_RX  = 0x22U,    /*!< Peripheral in indirect mode with reception ongoing    */ | ||||
|   HAL_QSPI_STATE_BUSY_AUTO_POLLING = 0x42U,    /*!< Peripheral in auto polling mode ongoing               */ | ||||
|   HAL_QSPI_STATE_BUSY_MEM_MAPPED   = 0x82U,    /*!< Peripheral in memory mapped mode ongoing              */ | ||||
|   HAL_QSPI_STATE_ABORT             = 0x08U,    /*!< Peripheral with abort request ongoing                 */ | ||||
|   HAL_QSPI_STATE_ERROR             = 0x04U     /*!< Peripheral in error                                   */ | ||||
| }HAL_QSPI_StateTypeDef; | ||||
|  | ||||
| /** | ||||
|   * @brief  QSPI Handle Structure definition | ||||
|   */ | ||||
| #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1) | ||||
| typedef struct __QSPI_HandleTypeDef | ||||
| #else | ||||
| typedef struct | ||||
| #endif | ||||
| { | ||||
|   QUADSPI_TypeDef            *Instance;        /* QSPI registers base address        */ | ||||
|   QSPI_InitTypeDef           Init;             /* QSPI communication parameters      */ | ||||
|   uint8_t                    *pTxBuffPtr;      /* Pointer to QSPI Tx transfer Buffer */ | ||||
|   __IO uint32_t              TxXferSize;       /* QSPI Tx Transfer size              */ | ||||
|   __IO uint32_t              TxXferCount;      /* QSPI Tx Transfer Counter           */ | ||||
|   uint8_t                    *pRxBuffPtr;      /* Pointer to QSPI Rx transfer Buffer */ | ||||
|   __IO uint32_t              RxXferSize;       /* QSPI Rx Transfer size              */ | ||||
|   __IO uint32_t              RxXferCount;      /* QSPI Rx Transfer Counter           */ | ||||
|   DMA_HandleTypeDef          *hdma;            /* QSPI Rx/Tx DMA Handle parameters   */ | ||||
|   __IO HAL_LockTypeDef       Lock;             /* Locking object                     */ | ||||
|   __IO HAL_QSPI_StateTypeDef State;            /* QSPI communication state           */ | ||||
|   __IO uint32_t              ErrorCode;        /* QSPI Error code                    */ | ||||
|   uint32_t                   Timeout;          /* Timeout for the QSPI memory access */ | ||||
| #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1) | ||||
|   void (* ErrorCallback)        (struct __QSPI_HandleTypeDef *hqspi); | ||||
|   void (* AbortCpltCallback)    (struct __QSPI_HandleTypeDef *hqspi); | ||||
|   void (* FifoThresholdCallback)(struct __QSPI_HandleTypeDef *hqspi); | ||||
|   void (* CmdCpltCallback)      (struct __QSPI_HandleTypeDef *hqspi); | ||||
|   void (* RxCpltCallback)       (struct __QSPI_HandleTypeDef *hqspi); | ||||
|   void (* TxCpltCallback)       (struct __QSPI_HandleTypeDef *hqspi); | ||||
|   void (* RxHalfCpltCallback)   (struct __QSPI_HandleTypeDef *hqspi); | ||||
|   void (* TxHalfCpltCallback)   (struct __QSPI_HandleTypeDef *hqspi); | ||||
|   void (* StatusMatchCallback)  (struct __QSPI_HandleTypeDef *hqspi); | ||||
|   void (* TimeOutCallback)      (struct __QSPI_HandleTypeDef *hqspi); | ||||
|  | ||||
|   void (* MspInitCallback)      (struct __QSPI_HandleTypeDef *hqspi); | ||||
|   void (* MspDeInitCallback)    (struct __QSPI_HandleTypeDef *hqspi); | ||||
| #endif | ||||
| }QSPI_HandleTypeDef; | ||||
|  | ||||
| /** | ||||
|   * @brief  QSPI Command structure definition | ||||
|   */ | ||||
| typedef struct | ||||
| { | ||||
|   uint32_t Instruction;        /* Specifies the Instruction to be sent | ||||
|                                   This parameter can be a value (8-bit) between 0x00 and 0xFF */ | ||||
|   uint32_t Address;            /* Specifies the Address to be sent (Size from 1 to 4 bytes according AddressSize) | ||||
|                                   This parameter can be a value (32-bits) between 0x0 and 0xFFFFFFFF */ | ||||
|   uint32_t AlternateBytes;     /* Specifies the Alternate Bytes to be sent (Size from 1 to 4 bytes according AlternateBytesSize) | ||||
|                                   This parameter can be a value (32-bits) between 0x0 and 0xFFFFFFFF */ | ||||
|   uint32_t AddressSize;        /* Specifies the Address Size | ||||
|                                   This parameter can be a value of @ref QSPI_AddressSize */ | ||||
|   uint32_t AlternateBytesSize; /* Specifies the Alternate Bytes Size | ||||
|                                   This parameter can be a value of @ref QSPI_AlternateBytesSize */ | ||||
|   uint32_t DummyCycles;        /* Specifies the Number of Dummy Cycles. | ||||
|                                   This parameter can be a number between 0 and 31 */ | ||||
|   uint32_t InstructionMode;    /* Specifies the Instruction Mode | ||||
|                                   This parameter can be a value of @ref QSPI_InstructionMode */ | ||||
|   uint32_t AddressMode;        /* Specifies the Address Mode | ||||
|                                   This parameter can be a value of @ref QSPI_AddressMode */ | ||||
|   uint32_t AlternateByteMode;  /* Specifies the Alternate Bytes Mode | ||||
|                                   This parameter can be a value of @ref QSPI_AlternateBytesMode */ | ||||
|   uint32_t DataMode;           /* Specifies the Data Mode (used for dummy cycles and data phases) | ||||
|                                   This parameter can be a value of @ref QSPI_DataMode */ | ||||
|   uint32_t NbData;             /* Specifies the number of data to transfer. (This is the number of bytes) | ||||
|                                   This parameter can be any value between 0 and 0xFFFFFFFF (0 means undefined length | ||||
|                                   until end of memory)*/ | ||||
|   uint32_t DdrMode;            /* Specifies the double data rate mode for address, alternate byte and data phase | ||||
|                                   This parameter can be a value of @ref QSPI_DdrMode */ | ||||
|   uint32_t DdrHoldHalfCycle;   /* Specifies if the DDR hold is enabled. When enabled it delays the data | ||||
|                                   output by one half of system clock in DDR mode. | ||||
|                                   This parameter can be a value of @ref QSPI_DdrHoldHalfCycle */ | ||||
|   uint32_t SIOOMode;           /* Specifies the send instruction only once mode | ||||
|                                   This parameter can be a value of @ref QSPI_SIOOMode */ | ||||
| }QSPI_CommandTypeDef; | ||||
|  | ||||
| /** | ||||
|   * @brief  QSPI Auto Polling mode configuration structure definition | ||||
|   */ | ||||
| typedef struct | ||||
| { | ||||
|   uint32_t Match;              /* Specifies the value to be compared with the masked status register to get a match. | ||||
|                                   This parameter can be any value between 0 and 0xFFFFFFFF */ | ||||
|   uint32_t Mask;               /* Specifies the mask to be applied to the status bytes received. | ||||
|                                   This parameter can be any value between 0 and 0xFFFFFFFF */ | ||||
|   uint32_t Interval;           /* Specifies the number of clock cycles between two read during automatic polling phases. | ||||
|                                   This parameter can be any value between 0 and 0xFFFF */ | ||||
|   uint32_t StatusBytesSize;    /* Specifies the size of the status bytes received. | ||||
|                                   This parameter can be any value between 1 and 4 */ | ||||
|   uint32_t MatchMode;          /* Specifies the method used for determining a match. | ||||
|                                   This parameter can be a value of @ref QSPI_MatchMode */ | ||||
|   uint32_t AutomaticStop;      /* Specifies if automatic polling is stopped after a match. | ||||
|                                   This parameter can be a value of @ref QSPI_AutomaticStop */ | ||||
| }QSPI_AutoPollingTypeDef; | ||||
|  | ||||
| /** | ||||
|   * @brief  QSPI Memory Mapped mode configuration structure definition | ||||
|   */ | ||||
| typedef struct | ||||
| { | ||||
|   uint32_t TimeOutPeriod;      /* Specifies the number of clock to wait when the FIFO is full before to release the chip select. | ||||
|                                   This parameter can be any value between 0 and 0xFFFF */ | ||||
|   uint32_t TimeOutActivation;  /* Specifies if the timeout counter is enabled to release the chip select. | ||||
|                                   This parameter can be a value of @ref QSPI_TimeOutActivation */ | ||||
| }QSPI_MemoryMappedTypeDef; | ||||
|  | ||||
| #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1) | ||||
| /** | ||||
|   * @brief  HAL QSPI Callback ID enumeration definition | ||||
|   */ | ||||
| typedef enum | ||||
| { | ||||
|   HAL_QSPI_ERROR_CB_ID          = 0x00U,  /*!< QSPI Error Callback ID            */ | ||||
|   HAL_QSPI_ABORT_CB_ID          = 0x01U,  /*!< QSPI Abort Callback ID            */ | ||||
|   HAL_QSPI_FIFO_THRESHOLD_CB_ID = 0x02U,  /*!< QSPI FIFO Threshold Callback ID   */ | ||||
|   HAL_QSPI_CMD_CPLT_CB_ID       = 0x03U,  /*!< QSPI Command Complete Callback ID */ | ||||
|   HAL_QSPI_RX_CPLT_CB_ID        = 0x04U,  /*!< QSPI Rx Complete Callback ID      */ | ||||
|   HAL_QSPI_TX_CPLT_CB_ID        = 0x05U,  /*!< QSPI Tx Complete Callback ID      */ | ||||
|   HAL_QSPI_RX_HALF_CPLT_CB_ID   = 0x06U,  /*!< QSPI Rx Half Complete Callback ID */ | ||||
|   HAL_QSPI_TX_HALF_CPLT_CB_ID   = 0x07U,  /*!< QSPI Tx Half Complete Callback ID */ | ||||
|   HAL_QSPI_STATUS_MATCH_CB_ID   = 0x08U,  /*!< QSPI Status Match Callback ID     */ | ||||
|   HAL_QSPI_TIMEOUT_CB_ID        = 0x09U,  /*!< QSPI Timeout Callback ID          */ | ||||
|  | ||||
|   HAL_QSPI_MSP_INIT_CB_ID       = 0x0AU,  /*!< QSPI MspInit Callback ID          */ | ||||
|   HAL_QSPI_MSP_DEINIT_CB_ID     = 0x0B0   /*!< QSPI MspDeInit Callback ID        */ | ||||
| }HAL_QSPI_CallbackIDTypeDef; | ||||
|  | ||||
| /** | ||||
|   * @brief  HAL QSPI Callback pointer definition | ||||
|   */ | ||||
| typedef void (*pQSPI_CallbackTypeDef)(QSPI_HandleTypeDef *hqspi); | ||||
| #endif | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /* Exported constants --------------------------------------------------------*/ | ||||
| /** @defgroup QSPI_Exported_Constants QSPI Exported Constants | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_ErrorCode QSPI Error Code | ||||
|   * @{ | ||||
|   */ | ||||
| #define HAL_QSPI_ERROR_NONE             0x00000000U /*!< No error                 */ | ||||
| #define HAL_QSPI_ERROR_TIMEOUT          0x00000001U /*!< Timeout error            */ | ||||
| #define HAL_QSPI_ERROR_TRANSFER         0x00000002U /*!< Transfer error           */ | ||||
| #define HAL_QSPI_ERROR_DMA              0x00000004U /*!< DMA transfer error       */ | ||||
| #define HAL_QSPI_ERROR_INVALID_PARAM    0x00000008U /*!< Invalid parameters error */ | ||||
| #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1) | ||||
| #define HAL_QSPI_ERROR_INVALID_CALLBACK 0x00000010U /*!< Invalid callback error   */ | ||||
| #endif | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_SampleShifting QSPI Sample Shifting | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_SAMPLE_SHIFTING_NONE      0x00000000U                   /*!<No clock cycle shift to sample data*/ | ||||
| #define QSPI_SAMPLE_SHIFTING_HALFCYCLE ((uint32_t)QUADSPI_CR_SSHIFT) /*!<1/2 clock cycle shift to sample data*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_ChipSelectHighTime QSPI ChipSelect High Time | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_CS_HIGH_TIME_1_CYCLE      0x00000000U                                         /*!<nCS stay high for at least 1 clock cycle between commands*/ | ||||
| #define QSPI_CS_HIGH_TIME_2_CYCLE      ((uint32_t)QUADSPI_DCR_CSHT_0)                      /*!<nCS stay high for at least 2 clock cycles between commands*/ | ||||
| #define QSPI_CS_HIGH_TIME_3_CYCLE      ((uint32_t)QUADSPI_DCR_CSHT_1)                      /*!<nCS stay high for at least 3 clock cycles between commands*/ | ||||
| #define QSPI_CS_HIGH_TIME_4_CYCLE      ((uint32_t)QUADSPI_DCR_CSHT_0 | QUADSPI_DCR_CSHT_1) /*!<nCS stay high for at least 4 clock cycles between commands*/ | ||||
| #define QSPI_CS_HIGH_TIME_5_CYCLE      ((uint32_t)QUADSPI_DCR_CSHT_2)                      /*!<nCS stay high for at least 5 clock cycles between commands*/ | ||||
| #define QSPI_CS_HIGH_TIME_6_CYCLE      ((uint32_t)QUADSPI_DCR_CSHT_2 | QUADSPI_DCR_CSHT_0) /*!<nCS stay high for at least 6 clock cycles between commands*/ | ||||
| #define QSPI_CS_HIGH_TIME_7_CYCLE      ((uint32_t)QUADSPI_DCR_CSHT_2 | QUADSPI_DCR_CSHT_1) /*!<nCS stay high for at least 7 clock cycles between commands*/ | ||||
| #define QSPI_CS_HIGH_TIME_8_CYCLE      ((uint32_t)QUADSPI_DCR_CSHT)                        /*!<nCS stay high for at least 8 clock cycles between commands*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_ClockMode QSPI Clock Mode | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_CLOCK_MODE_0              0x00000000U                    /*!<Clk stays low while nCS is released*/ | ||||
| #define QSPI_CLOCK_MODE_3              ((uint32_t)QUADSPI_DCR_CKMODE) /*!<Clk goes high while nCS is released*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_Flash_Select QSPI Flash Select | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_FLASH_ID_1                0x00000000U                 /*!<FLASH 1 selected*/ | ||||
| #define QSPI_FLASH_ID_2                ((uint32_t)QUADSPI_CR_FSEL) /*!<FLASH 2 selected*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
|   /** @defgroup QSPI_DualFlash_Mode QSPI Dual Flash Mode | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_DUALFLASH_ENABLE          ((uint32_t)QUADSPI_CR_DFM) /*!<Dual-flash mode enabled*/ | ||||
| #define QSPI_DUALFLASH_DISABLE         0x00000000U                /*!<Dual-flash mode disabled*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_AddressSize QSPI Address Size | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_ADDRESS_8_BITS            0x00000000U                      /*!<8-bit address*/ | ||||
| #define QSPI_ADDRESS_16_BITS           ((uint32_t)QUADSPI_CCR_ADSIZE_0) /*!<16-bit address*/ | ||||
| #define QSPI_ADDRESS_24_BITS           ((uint32_t)QUADSPI_CCR_ADSIZE_1) /*!<24-bit address*/ | ||||
| #define QSPI_ADDRESS_32_BITS           ((uint32_t)QUADSPI_CCR_ADSIZE)   /*!<32-bit address*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_AlternateBytesSize QSPI Alternate Bytes Size | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_ALTERNATE_BYTES_8_BITS    0x00000000U                      /*!<8-bit alternate bytes*/ | ||||
| #define QSPI_ALTERNATE_BYTES_16_BITS   ((uint32_t)QUADSPI_CCR_ABSIZE_0) /*!<16-bit alternate bytes*/ | ||||
| #define QSPI_ALTERNATE_BYTES_24_BITS   ((uint32_t)QUADSPI_CCR_ABSIZE_1) /*!<24-bit alternate bytes*/ | ||||
| #define QSPI_ALTERNATE_BYTES_32_BITS   ((uint32_t)QUADSPI_CCR_ABSIZE)   /*!<32-bit alternate bytes*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_InstructionMode QSPI Instruction Mode | ||||
| * @{ | ||||
| */ | ||||
| #define QSPI_INSTRUCTION_NONE          0x00000000U                     /*!<No instruction*/ | ||||
| #define QSPI_INSTRUCTION_1_LINE        ((uint32_t)QUADSPI_CCR_IMODE_0) /*!<Instruction on a single line*/ | ||||
| #define QSPI_INSTRUCTION_2_LINES       ((uint32_t)QUADSPI_CCR_IMODE_1) /*!<Instruction on two lines*/ | ||||
| #define QSPI_INSTRUCTION_4_LINES       ((uint32_t)QUADSPI_CCR_IMODE)   /*!<Instruction on four lines*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_AddressMode QSPI Address Mode | ||||
| * @{ | ||||
| */ | ||||
| #define QSPI_ADDRESS_NONE              0x00000000U                      /*!<No address*/ | ||||
| #define QSPI_ADDRESS_1_LINE            ((uint32_t)QUADSPI_CCR_ADMODE_0) /*!<Address on a single line*/ | ||||
| #define QSPI_ADDRESS_2_LINES           ((uint32_t)QUADSPI_CCR_ADMODE_1) /*!<Address on two lines*/ | ||||
| #define QSPI_ADDRESS_4_LINES           ((uint32_t)QUADSPI_CCR_ADMODE)   /*!<Address on four lines*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_AlternateBytesMode QSPI Alternate Bytes Mode | ||||
| * @{ | ||||
| */ | ||||
| #define QSPI_ALTERNATE_BYTES_NONE      0x00000000U                      /*!<No alternate bytes*/ | ||||
| #define QSPI_ALTERNATE_BYTES_1_LINE    ((uint32_t)QUADSPI_CCR_ABMODE_0) /*!<Alternate bytes on a single line*/ | ||||
| #define QSPI_ALTERNATE_BYTES_2_LINES   ((uint32_t)QUADSPI_CCR_ABMODE_1) /*!<Alternate bytes on two lines*/ | ||||
| #define QSPI_ALTERNATE_BYTES_4_LINES   ((uint32_t)QUADSPI_CCR_ABMODE)   /*!<Alternate bytes on four lines*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_DataMode QSPI Data Mode | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_DATA_NONE                 0x00000000U                     /*!<No data*/ | ||||
| #define QSPI_DATA_1_LINE               ((uint32_t)QUADSPI_CCR_DMODE_0) /*!<Data on a single line*/ | ||||
| #define QSPI_DATA_2_LINES              ((uint32_t)QUADSPI_CCR_DMODE_1) /*!<Data on two lines*/ | ||||
| #define QSPI_DATA_4_LINES              ((uint32_t)QUADSPI_CCR_DMODE)   /*!<Data on four lines*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_DdrMode QSPI DDR Mode | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_DDR_MODE_DISABLE          0x00000000U                  /*!<Double data rate mode disabled*/ | ||||
| #define QSPI_DDR_MODE_ENABLE           ((uint32_t)QUADSPI_CCR_DDRM) /*!<Double data rate mode enabled*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_DdrHoldHalfCycle QSPI DDR Data Output Delay | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_DDR_HHC_ANALOG_DELAY      0x00000000U                  /*!<Delay the data output using analog delay in DDR mode*/ | ||||
| #define QSPI_DDR_HHC_HALF_CLK_DELAY    ((uint32_t)QUADSPI_CCR_DHHC) /*!<Delay the data output by one half of system clock in DDR mode*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_SIOOMode QSPI Send Instruction Mode | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_SIOO_INST_EVERY_CMD       0x00000000U                  /*!<Send instruction on every transaction*/ | ||||
| #define QSPI_SIOO_INST_ONLY_FIRST_CMD  ((uint32_t)QUADSPI_CCR_SIOO) /*!<Send instruction only for the first command*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_MatchMode QSPI Match Mode | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_MATCH_MODE_AND            0x00000000U                /*!<AND match mode between unmasked bits*/ | ||||
| #define QSPI_MATCH_MODE_OR             ((uint32_t)QUADSPI_CR_PMM) /*!<OR match mode between unmasked bits*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_AutomaticStop QSPI Automatic Stop | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_AUTOMATIC_STOP_DISABLE    0x00000000U                 /*!<AutoPolling stops only with abort or QSPI disabling*/ | ||||
| #define QSPI_AUTOMATIC_STOP_ENABLE     ((uint32_t)QUADSPI_CR_APMS) /*!<AutoPolling stops as soon as there is a match*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_TimeOutActivation QSPI Timeout Activation | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_TIMEOUT_COUNTER_DISABLE   0x00000000U                 /*!<Timeout counter disabled, nCS remains active*/ | ||||
| #define QSPI_TIMEOUT_COUNTER_ENABLE    ((uint32_t)QUADSPI_CR_TCEN) /*!<Timeout counter enabled, nCS released when timeout expires*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_Flags QSPI Flags | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_FLAG_BUSY                 QUADSPI_SR_BUSY /*!<Busy flag: operation is ongoing*/ | ||||
| #define QSPI_FLAG_TO                   QUADSPI_SR_TOF  /*!<Timeout flag: timeout occurs in memory-mapped mode*/ | ||||
| #define QSPI_FLAG_SM                   QUADSPI_SR_SMF  /*!<Status match flag: received data matches in autopolling mode*/ | ||||
| #define QSPI_FLAG_FT                   QUADSPI_SR_FTF  /*!<Fifo threshold flag: Fifo threshold reached or data left after read from memory is complete*/ | ||||
| #define QSPI_FLAG_TC                   QUADSPI_SR_TCF  /*!<Transfer complete flag: programmed number of data have been transferred or the transfer has been aborted*/ | ||||
| #define QSPI_FLAG_TE                   QUADSPI_SR_TEF  /*!<Transfer error flag: invalid address is being accessed*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_Interrupts QSPI Interrupts | ||||
|   * @{ | ||||
|   */ | ||||
| #define QSPI_IT_TO                     QUADSPI_CR_TOIE /*!<Interrupt on the timeout flag*/ | ||||
| #define QSPI_IT_SM                     QUADSPI_CR_SMIE /*!<Interrupt on the status match flag*/ | ||||
| #define QSPI_IT_FT                     QUADSPI_CR_FTIE /*!<Interrupt on the fifo threshold flag*/ | ||||
| #define QSPI_IT_TC                     QUADSPI_CR_TCIE /*!<Interrupt on the transfer complete flag*/ | ||||
| #define QSPI_IT_TE                     QUADSPI_CR_TEIE /*!<Interrupt on the transfer error flag*/ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @defgroup QSPI_Timeout_definition QSPI Timeout definition | ||||
|   * @brief QSPI Timeout definition | ||||
|   * @{ | ||||
|   */ | ||||
| #define HAL_QSPI_TIMEOUT_DEFAULT_VALUE 5000U /* 5 s */ | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /* Exported macros -----------------------------------------------------------*/ | ||||
| /** @defgroup QSPI_Exported_Macros QSPI Exported Macros | ||||
|   * @{ | ||||
|   */ | ||||
| /** @brief Reset QSPI handle state. | ||||
|   * @param  __HANDLE__ : QSPI handle. | ||||
|   * @retval None | ||||
|   */ | ||||
| #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1) | ||||
| #define __HAL_QSPI_RESET_HANDLE_STATE(__HANDLE__)           do {                                              \ | ||||
|                                                                   (__HANDLE__)->State = HAL_QSPI_STATE_RESET; \ | ||||
|                                                                   (__HANDLE__)->MspInitCallback = NULL;       \ | ||||
|                                                                   (__HANDLE__)->MspDeInitCallback = NULL;     \ | ||||
|                                                                } while(0) | ||||
| #else | ||||
| #define __HAL_QSPI_RESET_HANDLE_STATE(__HANDLE__)           ((__HANDLE__)->State = HAL_QSPI_STATE_RESET) | ||||
| #endif | ||||
|  | ||||
| /** @brief  Enable the QSPI peripheral. | ||||
|   * @param  __HANDLE__ : specifies the QSPI Handle. | ||||
|   * @retval None | ||||
|   */ | ||||
| #define __HAL_QSPI_ENABLE(__HANDLE__)                       SET_BIT((__HANDLE__)->Instance->CR, QUADSPI_CR_EN) | ||||
|  | ||||
| /** @brief  Disable the QSPI peripheral. | ||||
|   * @param  __HANDLE__ : specifies the QSPI Handle. | ||||
|   * @retval None | ||||
|   */ | ||||
| #define __HAL_QSPI_DISABLE(__HANDLE__)                      CLEAR_BIT((__HANDLE__)->Instance->CR, QUADSPI_CR_EN) | ||||
|  | ||||
| /** @brief  Enable the specified QSPI interrupt. | ||||
|   * @param  __HANDLE__ : specifies the QSPI Handle. | ||||
|   * @param  __INTERRUPT__ : specifies the QSPI interrupt source to enable. | ||||
|   *          This parameter can be one of the following values: | ||||
|   *            @arg QSPI_IT_TO: QSPI Timeout interrupt | ||||
|   *            @arg QSPI_IT_SM: QSPI Status match interrupt | ||||
|   *            @arg QSPI_IT_FT: QSPI FIFO threshold interrupt | ||||
|   *            @arg QSPI_IT_TC: QSPI Transfer complete interrupt | ||||
|   *            @arg QSPI_IT_TE: QSPI Transfer error interrupt | ||||
|   * @retval None | ||||
|   */ | ||||
| #define __HAL_QSPI_ENABLE_IT(__HANDLE__, __INTERRUPT__)     SET_BIT((__HANDLE__)->Instance->CR, (__INTERRUPT__)) | ||||
|  | ||||
|  | ||||
| /** @brief  Disable the specified QSPI interrupt. | ||||
|   * @param  __HANDLE__ : specifies the QSPI Handle. | ||||
|   * @param  __INTERRUPT__ : specifies the QSPI interrupt source to disable. | ||||
|   *          This parameter can be one of the following values: | ||||
|   *            @arg QSPI_IT_TO: QSPI Timeout interrupt | ||||
|   *            @arg QSPI_IT_SM: QSPI Status match interrupt | ||||
|   *            @arg QSPI_IT_FT: QSPI FIFO threshold interrupt | ||||
|   *            @arg QSPI_IT_TC: QSPI Transfer complete interrupt | ||||
|   *            @arg QSPI_IT_TE: QSPI Transfer error interrupt | ||||
|   * @retval None | ||||
|   */ | ||||
| #define __HAL_QSPI_DISABLE_IT(__HANDLE__, __INTERRUPT__)    CLEAR_BIT((__HANDLE__)->Instance->CR, (__INTERRUPT__)) | ||||
|  | ||||
| /** @brief  Check whether the specified QSPI interrupt source is enabled or not. | ||||
|   * @param  __HANDLE__ : specifies the QSPI Handle. | ||||
|   * @param  __INTERRUPT__ : specifies the QSPI interrupt source to check. | ||||
|   *          This parameter can be one of the following values: | ||||
|   *            @arg QSPI_IT_TO: QSPI Timeout interrupt | ||||
|   *            @arg QSPI_IT_SM: QSPI Status match interrupt | ||||
|   *            @arg QSPI_IT_FT: QSPI FIFO threshold interrupt | ||||
|   *            @arg QSPI_IT_TC: QSPI Transfer complete interrupt | ||||
|   *            @arg QSPI_IT_TE: QSPI Transfer error interrupt | ||||
|   * @retval The new state of __INTERRUPT__ (TRUE or FALSE). | ||||
|   */ | ||||
| #define __HAL_QSPI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (READ_BIT((__HANDLE__)->Instance->CR, (__INTERRUPT__)) == (__INTERRUPT__)) | ||||
|  | ||||
| /** | ||||
|   * @brief  Check whether the selected QSPI flag is set or not. | ||||
|   * @param  __HANDLE__ : specifies the QSPI Handle. | ||||
|   * @param  __FLAG__ : specifies the QSPI flag to check. | ||||
|   *          This parameter can be one of the following values: | ||||
|   *            @arg QSPI_FLAG_BUSY: QSPI Busy flag | ||||
|   *            @arg QSPI_FLAG_TO:   QSPI Timeout flag | ||||
|   *            @arg QSPI_FLAG_SM:   QSPI Status match flag | ||||
|   *            @arg QSPI_FLAG_FT:   QSPI FIFO threshold flag | ||||
|   *            @arg QSPI_FLAG_TC:   QSPI Transfer complete flag | ||||
|   *            @arg QSPI_FLAG_TE:   QSPI Transfer error flag | ||||
|   * @retval None | ||||
|   */ | ||||
| #define __HAL_QSPI_GET_FLAG(__HANDLE__, __FLAG__)           ((READ_BIT((__HANDLE__)->Instance->SR, (__FLAG__)) != 0U) ? SET : RESET) | ||||
|  | ||||
| /** @brief  Clears the specified QSPI's flag status. | ||||
|   * @param  __HANDLE__ : specifies the QSPI Handle. | ||||
|   * @param  __FLAG__ : specifies the QSPI clear register flag that needs to be set | ||||
|   *          This parameter can be one of the following values: | ||||
|   *            @arg QSPI_FLAG_TO: QSPI Timeout flag | ||||
|   *            @arg QSPI_FLAG_SM: QSPI Status match flag | ||||
|   *            @arg QSPI_FLAG_TC: QSPI Transfer complete flag | ||||
|   *            @arg QSPI_FLAG_TE: QSPI Transfer error flag | ||||
|   * @retval None | ||||
|   */ | ||||
| #define __HAL_QSPI_CLEAR_FLAG(__HANDLE__, __FLAG__)         WRITE_REG((__HANDLE__)->Instance->FCR, (__FLAG__)) | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /* Exported functions --------------------------------------------------------*/ | ||||
| /** @addtogroup QSPI_Exported_Functions | ||||
|   * @{ | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup QSPI_Exported_Functions_Group1 | ||||
|   * @{ | ||||
|   */ | ||||
| /* Initialization/de-initialization functions  ********************************/ | ||||
| HAL_StatusTypeDef     HAL_QSPI_Init     (QSPI_HandleTypeDef *hqspi); | ||||
| HAL_StatusTypeDef     HAL_QSPI_DeInit   (QSPI_HandleTypeDef *hqspi); | ||||
| void                  HAL_QSPI_MspInit  (QSPI_HandleTypeDef *hqspi); | ||||
| void                  HAL_QSPI_MspDeInit(QSPI_HandleTypeDef *hqspi); | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup QSPI_Exported_Functions_Group2 | ||||
|   * @{ | ||||
|   */ | ||||
| /* IO operation functions *****************************************************/ | ||||
| /* QSPI IRQ handler method */ | ||||
| void                  HAL_QSPI_IRQHandler(QSPI_HandleTypeDef *hqspi); | ||||
|  | ||||
| /* QSPI indirect mode */ | ||||
| HAL_StatusTypeDef     HAL_QSPI_Command      (QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, uint32_t Timeout); | ||||
| HAL_StatusTypeDef     HAL_QSPI_Transmit     (QSPI_HandleTypeDef *hqspi, uint8_t *pData, uint32_t Timeout); | ||||
| HAL_StatusTypeDef     HAL_QSPI_Receive      (QSPI_HandleTypeDef *hqspi, uint8_t *pData, uint32_t Timeout); | ||||
| HAL_StatusTypeDef     HAL_QSPI_Command_IT   (QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd); | ||||
| HAL_StatusTypeDef     HAL_QSPI_Transmit_IT  (QSPI_HandleTypeDef *hqspi, uint8_t *pData); | ||||
| HAL_StatusTypeDef     HAL_QSPI_Receive_IT   (QSPI_HandleTypeDef *hqspi, uint8_t *pData); | ||||
| HAL_StatusTypeDef     HAL_QSPI_Transmit_DMA (QSPI_HandleTypeDef *hqspi, uint8_t *pData); | ||||
| HAL_StatusTypeDef     HAL_QSPI_Receive_DMA  (QSPI_HandleTypeDef *hqspi, uint8_t *pData); | ||||
|  | ||||
| /* QSPI status flag polling mode */ | ||||
| HAL_StatusTypeDef     HAL_QSPI_AutoPolling   (QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg, uint32_t Timeout); | ||||
| HAL_StatusTypeDef     HAL_QSPI_AutoPolling_IT(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg); | ||||
|  | ||||
| /* QSPI memory-mapped mode */ | ||||
| HAL_StatusTypeDef     HAL_QSPI_MemoryMapped(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_MemoryMappedTypeDef *cfg); | ||||
|  | ||||
| /* Callback functions in non-blocking modes ***********************************/ | ||||
| void                  HAL_QSPI_ErrorCallback        (QSPI_HandleTypeDef *hqspi); | ||||
| void                  HAL_QSPI_AbortCpltCallback    (QSPI_HandleTypeDef *hqspi); | ||||
| void                  HAL_QSPI_FifoThresholdCallback(QSPI_HandleTypeDef *hqspi); | ||||
|  | ||||
| /* QSPI indirect mode */ | ||||
| void                  HAL_QSPI_CmdCpltCallback      (QSPI_HandleTypeDef *hqspi); | ||||
| void                  HAL_QSPI_RxCpltCallback       (QSPI_HandleTypeDef *hqspi); | ||||
| void                  HAL_QSPI_TxCpltCallback       (QSPI_HandleTypeDef *hqspi); | ||||
| void                  HAL_QSPI_RxHalfCpltCallback   (QSPI_HandleTypeDef *hqspi); | ||||
| void                  HAL_QSPI_TxHalfCpltCallback   (QSPI_HandleTypeDef *hqspi); | ||||
|  | ||||
| /* QSPI status flag polling mode */ | ||||
| void                  HAL_QSPI_StatusMatchCallback  (QSPI_HandleTypeDef *hqspi); | ||||
|  | ||||
| /* QSPI memory-mapped mode */ | ||||
| void                  HAL_QSPI_TimeOutCallback      (QSPI_HandleTypeDef *hqspi); | ||||
|  | ||||
| #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1) | ||||
| /* QSPI callback registering/unregistering */ | ||||
| HAL_StatusTypeDef     HAL_QSPI_RegisterCallback     (QSPI_HandleTypeDef *hqspi, HAL_QSPI_CallbackIDTypeDef CallbackId, pQSPI_CallbackTypeDef pCallback); | ||||
| HAL_StatusTypeDef     HAL_QSPI_UnRegisterCallback   (QSPI_HandleTypeDef *hqspi, HAL_QSPI_CallbackIDTypeDef CallbackId); | ||||
| #endif | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** @addtogroup QSPI_Exported_Functions_Group3 | ||||
|   * @{ | ||||
|   */ | ||||
| /* Peripheral Control and State functions  ************************************/ | ||||
| HAL_QSPI_StateTypeDef HAL_QSPI_GetState        (QSPI_HandleTypeDef *hqspi); | ||||
| uint32_t              HAL_QSPI_GetError        (QSPI_HandleTypeDef *hqspi); | ||||
| HAL_StatusTypeDef     HAL_QSPI_Abort           (QSPI_HandleTypeDef *hqspi); | ||||
| HAL_StatusTypeDef     HAL_QSPI_Abort_IT        (QSPI_HandleTypeDef *hqspi); | ||||
| void                  HAL_QSPI_SetTimeout      (QSPI_HandleTypeDef *hqspi, uint32_t Timeout); | ||||
| HAL_StatusTypeDef     HAL_QSPI_SetFifoThreshold(QSPI_HandleTypeDef *hqspi, uint32_t Threshold); | ||||
| uint32_t              HAL_QSPI_GetFifoThreshold(QSPI_HandleTypeDef *hqspi); | ||||
| HAL_StatusTypeDef     HAL_QSPI_SetFlashID      (QSPI_HandleTypeDef *hqspi, uint32_t FlashID); | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
| /* End of exported functions -------------------------------------------------*/ | ||||
|  | ||||
| /* Private macros ------------------------------------------------------------*/ | ||||
| /** @defgroup QSPI_Private_Macros QSPI Private Macros | ||||
|   * @{ | ||||
|   */ | ||||
| #define IS_QSPI_CLOCK_PRESCALER(PRESCALER) ((PRESCALER) <= 0xFFU) | ||||
|  | ||||
| #define IS_QSPI_FIFO_THRESHOLD(THR)        (((THR) > 0U) && ((THR) <= 32U)) | ||||
|  | ||||
| #define IS_QSPI_SSHIFT(SSHIFT)             (((SSHIFT) == QSPI_SAMPLE_SHIFTING_NONE) || \ | ||||
|                                             ((SSHIFT) == QSPI_SAMPLE_SHIFTING_HALFCYCLE)) | ||||
|  | ||||
| #define IS_QSPI_FLASH_SIZE(FSIZE)          (((FSIZE) <= 31U)) | ||||
|  | ||||
| #define IS_QSPI_CS_HIGH_TIME(CSHTIME)      (((CSHTIME) == QSPI_CS_HIGH_TIME_1_CYCLE) || \ | ||||
|                                             ((CSHTIME) == QSPI_CS_HIGH_TIME_2_CYCLE) || \ | ||||
|                                             ((CSHTIME) == QSPI_CS_HIGH_TIME_3_CYCLE) || \ | ||||
|                                             ((CSHTIME) == QSPI_CS_HIGH_TIME_4_CYCLE) || \ | ||||
|                                             ((CSHTIME) == QSPI_CS_HIGH_TIME_5_CYCLE) || \ | ||||
|                                             ((CSHTIME) == QSPI_CS_HIGH_TIME_6_CYCLE) || \ | ||||
|                                             ((CSHTIME) == QSPI_CS_HIGH_TIME_7_CYCLE) || \ | ||||
|                                             ((CSHTIME) == QSPI_CS_HIGH_TIME_8_CYCLE)) | ||||
|  | ||||
| #define IS_QSPI_CLOCK_MODE(CLKMODE)        (((CLKMODE) == QSPI_CLOCK_MODE_0) || \ | ||||
|                                             ((CLKMODE) == QSPI_CLOCK_MODE_3)) | ||||
|  | ||||
| #define IS_QSPI_FLASH_ID(FLASH_ID)         (((FLASH_ID) == QSPI_FLASH_ID_1) || \ | ||||
|                                             ((FLASH_ID) == QSPI_FLASH_ID_2)) | ||||
|  | ||||
| #define IS_QSPI_DUAL_FLASH_MODE(MODE)      (((MODE) == QSPI_DUALFLASH_ENABLE) || \ | ||||
|                                             ((MODE) == QSPI_DUALFLASH_DISABLE)) | ||||
|  | ||||
| #define IS_QSPI_INSTRUCTION(INSTRUCTION)   ((INSTRUCTION) <= 0xFFU) | ||||
|  | ||||
| #define IS_QSPI_ADDRESS_SIZE(ADDR_SIZE)    (((ADDR_SIZE) == QSPI_ADDRESS_8_BITS)  || \ | ||||
|                                             ((ADDR_SIZE) == QSPI_ADDRESS_16_BITS) || \ | ||||
|                                             ((ADDR_SIZE) == QSPI_ADDRESS_24_BITS) || \ | ||||
|                                             ((ADDR_SIZE) == QSPI_ADDRESS_32_BITS)) | ||||
|  | ||||
| #define IS_QSPI_ALTERNATE_BYTES_SIZE(SIZE) (((SIZE) == QSPI_ALTERNATE_BYTES_8_BITS)  || \ | ||||
|                                             ((SIZE) == QSPI_ALTERNATE_BYTES_16_BITS) || \ | ||||
|                                             ((SIZE) == QSPI_ALTERNATE_BYTES_24_BITS) || \ | ||||
|                                             ((SIZE) == QSPI_ALTERNATE_BYTES_32_BITS)) | ||||
|  | ||||
| #define IS_QSPI_DUMMY_CYCLES(DCY)          ((DCY) <= 31U) | ||||
|  | ||||
| #define IS_QSPI_INSTRUCTION_MODE(MODE)     (((MODE) == QSPI_INSTRUCTION_NONE)    || \ | ||||
|                                             ((MODE) == QSPI_INSTRUCTION_1_LINE)  || \ | ||||
|                                             ((MODE) == QSPI_INSTRUCTION_2_LINES) || \ | ||||
|                                             ((MODE) == QSPI_INSTRUCTION_4_LINES)) | ||||
|  | ||||
| #define IS_QSPI_ADDRESS_MODE(MODE)         (((MODE) == QSPI_ADDRESS_NONE)    || \ | ||||
|                                             ((MODE) == QSPI_ADDRESS_1_LINE)  || \ | ||||
|                                             ((MODE) == QSPI_ADDRESS_2_LINES) || \ | ||||
|                                             ((MODE) == QSPI_ADDRESS_4_LINES)) | ||||
|  | ||||
| #define IS_QSPI_ALTERNATE_BYTES_MODE(MODE) (((MODE) == QSPI_ALTERNATE_BYTES_NONE)    || \ | ||||
|                                             ((MODE) == QSPI_ALTERNATE_BYTES_1_LINE)  || \ | ||||
|                                             ((MODE) == QSPI_ALTERNATE_BYTES_2_LINES) || \ | ||||
|                                             ((MODE) == QSPI_ALTERNATE_BYTES_4_LINES)) | ||||
|  | ||||
| #define IS_QSPI_DATA_MODE(MODE)            (((MODE) == QSPI_DATA_NONE)    || \ | ||||
|                                             ((MODE) == QSPI_DATA_1_LINE)  || \ | ||||
|                                             ((MODE) == QSPI_DATA_2_LINES) || \ | ||||
|                                             ((MODE) == QSPI_DATA_4_LINES)) | ||||
|  | ||||
| #define IS_QSPI_DDR_MODE(DDR_MODE)         (((DDR_MODE) == QSPI_DDR_MODE_DISABLE) || \ | ||||
|                                             ((DDR_MODE) == QSPI_DDR_MODE_ENABLE)) | ||||
|  | ||||
| #define IS_QSPI_DDR_HHC(DDR_HHC)           (((DDR_HHC) == QSPI_DDR_HHC_ANALOG_DELAY) || \ | ||||
|                                             ((DDR_HHC) == QSPI_DDR_HHC_HALF_CLK_DELAY)) | ||||
|  | ||||
| #define IS_QSPI_SIOO_MODE(SIOO_MODE)       (((SIOO_MODE) == QSPI_SIOO_INST_EVERY_CMD) || \ | ||||
|                                             ((SIOO_MODE) == QSPI_SIOO_INST_ONLY_FIRST_CMD)) | ||||
|  | ||||
| #define IS_QSPI_INTERVAL(INTERVAL)         ((INTERVAL) <= QUADSPI_PIR_INTERVAL) | ||||
|  | ||||
| #define IS_QSPI_STATUS_BYTES_SIZE(SIZE)    (((SIZE) >= 1U) && ((SIZE) <= 4U)) | ||||
|  | ||||
| #define IS_QSPI_MATCH_MODE(MODE)           (((MODE) == QSPI_MATCH_MODE_AND) || \ | ||||
|                                             ((MODE) == QSPI_MATCH_MODE_OR)) | ||||
|  | ||||
| #define IS_QSPI_AUTOMATIC_STOP(APMS)       (((APMS) == QSPI_AUTOMATIC_STOP_DISABLE) || \ | ||||
|                                             ((APMS) == QSPI_AUTOMATIC_STOP_ENABLE)) | ||||
|  | ||||
| #define IS_QSPI_TIMEOUT_ACTIVATION(TCEN)   (((TCEN) == QSPI_TIMEOUT_COUNTER_DISABLE) || \ | ||||
|                                             ((TCEN) == QSPI_TIMEOUT_COUNTER_ENABLE)) | ||||
|  | ||||
| #define IS_QSPI_TIMEOUT_PERIOD(PERIOD)     ((PERIOD) <= 0xFFFFU) | ||||
| /** | ||||
| * @} | ||||
| */ | ||||
| /* End of private macros -----------------------------------------------------*/ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| /** | ||||
|   * @} | ||||
|   */ | ||||
|  | ||||
| #endif /* defined(QUADSPI) */ | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif /* STM32F7xx_HAL_QSPI_H */ | ||||
		Reference in New Issue
	
	Block a user