STM32G474xx HAL用户手册
stm32g4xx_hal_qspi.h
转到此文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_hal_qspi.h
00004   * @author  MCD Application Team
00005   * @brief   QSPI HAL模块的头文件。
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2019 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32G4xx_HAL_QSPI_H
00021 #define STM32G4xx_HAL_QSPI_H
00022 
00023 #ifdef __cplusplus
00024  extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32g4xx_hal_def.h"
00029 
00030 #if defined(QUADSPI)
00031 
00032 /** @addtogroup STM32G4xx_HAL_Driver
00033   * @{
00034   */
00035 
00036 /** @addtogroup QSPI
00037   * @{
00038   */
00039 
00040 /* Exported types ------------------------------------------------------------*/
00041 /** @defgroup QSPI_Exported_Types QSPI导出的类型
00042   * @{
00043   */
00045 
00046 /**
00047   * @brief  QSPI初始化结构体定义
00048   */
00049 typedef struct
00050   uint32_t ClockPrescaler;     /* 指定用于根据AHB时钟生成时钟的分频系数。
00051                                   此参数可以是0到255之间的数值 */
00052   uint32_t FifoThreshold;      /* 指定FIFO中的字节数阈值(仅在间接模式下使用)
00053                                   此参数可以是1到16之间的值 */
00054   uint32_t SampleShifting;     /* 指定采样移位。数据延迟1/2时钟周期采样以
00055                                   补偿外部信号延迟。(在DDR模式下应为QSPI_SAMPLE_SHIFTING_NONE)
00056                                   此参数可以是@ref QSPI_SampleShifting的值 */
00057   uint32_t FlashSize;          /* 指定Flash大小。FlashSize+1实际上是用于寻址闪存的地址位数。
00058                                   闪存容量在间接模式下最高可达4GB
00059                                   (使用32位寻址),但在
00060                                   内存映射模式下可寻址空间限制为256MB
00061                                   此参数可以是0到31之间的数值 */
00062   uint32_t ChipSelectHighTime; /* 指定片选高电平时间。ChipSelectHighTime+1定义了命令之间片选必须保持高电平的
00063                                   最小时钟周期数。
00064                                   此参数可以是@ref QSPI_ChipSelectHighTime的值 */
00065   uint32_t ClockMode;          /* 指定时钟模式。它指示命令之间时钟的电平。
00066                                   此参数可以是@ref QSPI_ClockMode的值 */
00067   uint32_t FlashID;            /* 指定要使用的Flash,
00068                                   此参数可以是@ref QSPI_Flash_Select的值 */
00069   uint32_t DualFlash;          /* 指定双Flash模式状态
00070                                   此参数可以是@ref QSPI_DualFlash_Mode的值 */
00071 }QSPI_InitTypeDef;
00072 
00073 /**
00074   * @brief HAL QSPI状态结构体定义
00075   */
00076 typedef enum
00077 {
00078   HAL_QSPI_STATE_RESET             = 0x00U,    /*!< 外设未初始化                            */
00079   HAL_QSPI_STATE_READY             = 0x01U,    /*!< 外设已初始化并可使用              */
00080   HAL_QSPI_STATE_BUSY              = 0x02U,    /*!< 外设处于间接模式且忙碌                  */
00081   HAL_QSPI_STATE_BUSY_INDIRECT_TX  = 0x12U,    /*!< 外设处于间接模式且正在发送 */
00082   HAL_QSPI_STATE_BUSY_INDIRECT_RX  = 0x22U,    /*!< 外设处于间接模式且正在接收    */
00083   HAL_QSPI_STATE_BUSY_AUTO_POLLING = 0x42U,    /*!< 外设处于自动轮询模式                   */
00084   HAL_QSPI_STATE_BUSY_MEM_MAPPED   = 0x82U,    /*!< 外设处于内存映射模式                   */
00085   HAL_QSPI_STATE_ABORT             = 0x08U,    /*!< 外设正在处理中止请求                 */
00086   HAL_QSPI_STATE_ERROR             = 0x04U     /*!< 外设处于错误状态                                   */
00087 }HAL_QSPI_StateTypeDef;
00088 
00089 /**
00090   * @brief  QSPI句柄结构体定义
00091   */
00092 #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1)
00093 typedef struct __QSPI_HandleTypeDef
00094 #else
00095 typedef struct
00096 #endif
00097 {
00098   QUADSPI_TypeDef            *Instance;        /* QSPI寄存器基地址        */
00099   QSPI_InitTypeDef           Init;             /* QSPI通信参数      */
00100   uint8_t                    *pTxBuffPtr;      /* 指向QSPI发送传输缓冲区的指针 */
00101   __IO uint32_t              TxXferSize;       /* QSPI发送传输大小              */
00102   __IO uint32_t              TxXferCount;      /* QSPI发送传输计数器           */
00103   uint8_t                    *pRxBuffPtr;      /* 指向QSPI接收传输缓冲区的指针 */
00104   __IO uint32_t              RxXferSize;       /* QSPI接收传输大小              */
00105   __IO uint32_t              RxXferCount;      /* QSPI接收传输计数器           */
00106   DMA_HandleTypeDef          *hdma;            /* QSPI接收/发送DMA句柄参数   */
00107   __IO HAL_LockTypeDef       Lock;             /* 锁定对象                     */
00108   __IO HAL_QSPI_StateTypeDef State;            /* QSPI通信状态           */
00109   __IO uint32_t              ErrorCode;        /* QSPI错误代码                    */
00110   uint32_t                   Timeout;          /* QSPI存储器访问超时时间 */
00111 #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1)
00112   void (* ErrorCallback)        (struct __QSPI_HandleTypeDef *hqspi);
00113   void (*