|
STM32G474xx HAL用户手册
|
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 (*