mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
408 lines
17 KiB
C
408 lines
17 KiB
C
|
/*
|
||
|
* Copyright 2022 MindMotion Microelectronics Co., Ltd.
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
* SPDX-License-Identifier: BSD-3-Clause
|
||
|
*/
|
||
|
|
||
|
#ifndef __HAL_QSPI_H__
|
||
|
#define __HAL_QSPI_H__
|
||
|
|
||
|
#include "hal_common.h"
|
||
|
|
||
|
/*!
|
||
|
* @addtogroup QSPI
|
||
|
* @{
|
||
|
*/
|
||
|
|
||
|
/*!
|
||
|
* @brief QSPI driver version number.
|
||
|
*/
|
||
|
#define QSPI_DRIVER_VERSION 0u /*!< QSPI_0. */
|
||
|
|
||
|
/*!
|
||
|
* @addtogroup QSPI_STATUS
|
||
|
* @{
|
||
|
*/
|
||
|
#define QSPI_STATUS_XIP_ENABLE QSPI_SR_XIPST_MASK /*!< Status flag when QSPI XIP enabled. */
|
||
|
#define QSPI_STATUS_FIFO_FULL QSPI_SR_FULL_MASK /*!< Status flag when QSPI FIFO full. */
|
||
|
#define QSPI_STATUS_FIFO_EMPTY QSPI_SR_EMPTY_MASK /*!< Status flag when QSPI FIFO empty. */
|
||
|
#define QSPI_STATUS_BUSY QSPI_SR_BUSY_MASK /*!< Status flag when QSPI xfer data. */
|
||
|
#define QSPI_STATUS_XFER_DONE QSPI_SR_TCF_MASK /*!< Status flag when QSPI xfer done. */
|
||
|
#define QSPI_STATUS_OPMODE_CHANGE_DONE QSPI_SR_OPCRCF_MASK /*!< Status flag when QSPI change the operation mode done. */
|
||
|
/*!
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/*!
|
||
|
* @addtogroup QSPI_INT
|
||
|
* @{
|
||
|
*/
|
||
|
#define QSPI_INT_FIFO_FULL QSPI_IDER_FULLINTEN_MASK /*!< Interrupt enable when QSPI FIFO is full. */
|
||
|
#define QSPI_INT_FIFO_EMPTY QSPI_IDER_EMPTYINTEN_MASK /*!< Interrupt enable when QSPI FIFO is empty. */
|
||
|
#define QSPI_INT_XFER_DONE QSPI_IDER_TCFINTEN_MASK /*!< Interrupt enable when QSPI xfer done. */
|
||
|
/*!
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/*!
|
||
|
* @addtogroup QSPI_DMA
|
||
|
* @{
|
||
|
*/
|
||
|
#define QSPI_DMA_FIFO_FULL QSPI_IDER_FULLDMAEN_MASK /*!< DMA request enable when QSPI FIFO is full. */
|
||
|
#define QSPI_DMA_FIFO_EMPTY QSPI_IDER_EMPTYDMAEN_MASK /*!< DMA request enable when QSPI FIFO is empty. */
|
||
|
#define QSPI_DMA_XFER_DONE QSPI_IDER_TCFDMAEN_MASK /*!< DMA request enable when QSPI xfer done. */
|
||
|
/*!
|
||
|
* @}
|
||
|
*/
|
||
|
|
||
|
/*!
|
||
|
* @brief The QSPI SCK Prescaler.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
QSPI_SckPrescaler_Div2 = 0x00u, /*!< SCK output clock = AHB_CLK / 2. */
|
||
|
QSPI_SckPrescaler_Div4 = 0x01u, /*!< SCK output clock = AHB_CLK / 4. */
|
||
|
QSPI_SckPrescaler_Div6 = 0x02u, /*!< SCK output clock = AHB_CLK / 6. */
|
||
|
QSPI_SckPrescaler_Div8 = 0x03u, /*!< SCK output clock = AHB_CLK / 8. */
|
||
|
QSPI_SckPrescaler_Div10 = 0x04u, /*!< SCK output clock = AHB_CLK / 0. */
|
||
|
QSPI_SckPrescaler_Div12 = 0x05u, /*!< SCK output clock = AHB_CLK / 12. */
|
||
|
QSPI_SckPrescaler_Div14 = 0x06u, /*!< SCK output clock = AHB_CLK / 14. */
|
||
|
QSPI_SckPrescaler_Div16 = 0x07u, /*!< SCK output clock = AHB_CLK / 16. */
|
||
|
QSPI_SckPrescaler_Div18 = 0x08u, /*!< SCK output clock = AHB_CLK / 18. */
|
||
|
QSPI_SckPrescaler_Div20 = 0x09u, /*!< SCK output clock = AHB_CLK / 20. */
|
||
|
QSPI_SckPrescaler_Div22 = 0x0Au, /*!< SCK output clock = AHB_CLK / 22. */
|
||
|
QSPI_SckPrescaler_Div24 = 0x0Bu, /*!< SCK output clock = AHB_CLK / 24. */
|
||
|
QSPI_SckPrescaler_Div26 = 0x0Cu, /*!< SCK output clock = AHB_CLK / 26. */
|
||
|
QSPI_SckPrescaler_Div28 = 0x0Du, /*!< SCK output clock = AHB_CLK / 28. */
|
||
|
QSPI_SckPrescaler_Div30 = 0x0Eu, /*!< SCK output clock = AHB_CLK / 30. */
|
||
|
QSPI_SckPrescaler_Div32 = 0x0Fu, /*!< SCK output clock = AHB_CLK / 32. */
|
||
|
QSPI_SckPrescaler_Div34 = 0x10u, /*!< SCK output clock = AHB_CLK / 34. */
|
||
|
QSPI_SckPrescaler_Div36 = 0x11u, /*!< SCK output clock = AHB_CLK / 36. */
|
||
|
QSPI_SckPrescaler_Div38 = 0x12u, /*!< SCK output clock = AHB_CLK / 38. */
|
||
|
QSPI_SckPrescaler_Div40 = 0x13u, /*!< SCK output clock = AHB_CLK / 40. */
|
||
|
QSPI_SckPrescaler_Div42 = 0x14u, /*!< SCK output clock = AHB_CLK / 42. */
|
||
|
QSPI_SckPrescaler_Div44 = 0x15u, /*!< SCK output clock = AHB_CLK / 44. */
|
||
|
QSPI_SckPrescaler_Div46 = 0x16u, /*!< SCK output clock = AHB_CLK / 46. */
|
||
|
QSPI_SckPrescaler_Div48 = 0x17u, /*!< SCK output clock = AHB_CLK / 48. */
|
||
|
QSPI_SckPrescaler_Div50 = 0x18u, /*!< SCK output clock = AHB_CLK / 50. */
|
||
|
QSPI_SckPrescaler_Div52 = 0x19u, /*!< SCK output clock = AHB_CLK / 52. */
|
||
|
QSPI_SckPrescaler_Div54 = 0x1Au, /*!< SCK output clock = AHB_CLK / 54. */
|
||
|
QSPI_SckPrescaler_Div56 = 0x1Bu, /*!< SCK output clock = AHB_CLK / 56. */
|
||
|
QSPI_SckPrescaler_Div58 = 0x1Cu, /*!< SCK output clock = AHB_CLK / 58. */
|
||
|
QSPI_SckPrescaler_Div60 = 0x1Du, /*!< SCK output clock = AHB_CLK / 60. */
|
||
|
QSPI_SckPrescaler_Div62 = 0x1Eu, /*!< SCK output clock = AHB_CLK / 62. */
|
||
|
QSPI_SckPrescaler_Div64 = 0x1Fu, /*!< SCK output clock = AHB_CLK / 64. */
|
||
|
QSPI_SckPrescaler_Div66 = 0x20u, /*!< SCK output clock = AHB_CLK / 66. */
|
||
|
QSPI_SckPrescaler_Div68 = 0x21u, /*!< SCK output clock = AHB_CLK / 68. */
|
||
|
QSPI_SckPrescaler_Div70 = 0x22u, /*!< SCK output clock = AHB_CLK / 70. */
|
||
|
QSPI_SckPrescaler_Div72 = 0x23u, /*!< SCK output clock = AHB_CLK / 72. */
|
||
|
QSPI_SckPrescaler_Div74 = 0x24u, /*!< SCK output clock = AHB_CLK / 74. */
|
||
|
QSPI_SckPrescaler_Div76 = 0x25u, /*!< SCK output clock = AHB_CLK / 76. */
|
||
|
QSPI_SckPrescaler_Div78 = 0x26u, /*!< SCK output clock = AHB_CLK / 78. */
|
||
|
QSPI_SckPrescaler_Div80 = 0x27u, /*!< SCK output clock = AHB_CLK / 80. */
|
||
|
QSPI_SckPrescaler_Div82 = 0x28u, /*!< SCK output clock = AHB_CLK / 82. */
|
||
|
QSPI_SckPrescaler_Div84 = 0x29u, /*!< SCK output clock = AHB_CLK / 84. */
|
||
|
QSPI_SckPrescaler_Div86 = 0x2Au, /*!< SCK output clock = AHB_CLK / 86. */
|
||
|
QSPI_SckPrescaler_Div88 = 0x2Bu, /*!< SCK output clock = AHB_CLK / 88. */
|
||
|
QSPI_SckPrescaler_Div90 = 0x2Cu, /*!< SCK output clock = AHB_CLK / 90. */
|
||
|
QSPI_SckPrescaler_Div92 = 0x2Du, /*!< SCK output clock = AHB_CLK / 92. */
|
||
|
QSPI_SckPrescaler_Div94 = 0x2Eu, /*!< SCK output clock = AHB_CLK / 94. */
|
||
|
QSPI_SckPrescaler_Div96 = 0x2Fu, /*!< SCK output clock = AHB_CLK / 96. */
|
||
|
QSPI_SckPrescaler_Div98 = 0x30u, /*!< SCK output clock = AHB_CLK / 98. */
|
||
|
QSPI_SckPrescaler_Div100 = 0x31u, /*!< SCK output clock = AHB_CLK / 100. */
|
||
|
QSPI_SckPrescaler_Div102 = 0x32u, /*!< SCK output clock = AHB_CLK / 102. */
|
||
|
QSPI_SckPrescaler_Div104 = 0x33u, /*!< SCK output clock = AHB_CLK / 104. */
|
||
|
QSPI_SckPrescaler_Div106 = 0x34u, /*!< SCK output clock = AHB_CLK / 106. */
|
||
|
QSPI_SckPrescaler_Div108 = 0x35u, /*!< SCK output clock = AHB_CLK / 108. */
|
||
|
QSPI_SckPrescaler_Div110 = 0x36u, /*!< SCK output clock = AHB_CLK / 110. */
|
||
|
QSPI_SckPrescaler_Div112 = 0x37u, /*!< SCK output clock = AHB_CLK / 112. */
|
||
|
QSPI_SckPrescaler_Div114 = 0x38u, /*!< SCK output clock = AHB_CLK / 114. */
|
||
|
QSPI_SckPrescaler_Div116 = 0x39u, /*!< SCK output clock = AHB_CLK / 116. */
|
||
|
QSPI_SckPrescaler_Div118 = 0x3Au, /*!< SCK output clock = AHB_CLK / 118. */
|
||
|
QSPI_SckPrescaler_Div120 = 0x3Bu, /*!< SCK output clock = AHB_CLK / 120. */
|
||
|
QSPI_SckPrescaler_Div122 = 0x3Cu, /*!< SCK output clock = AHB_CLK / 122. */
|
||
|
QSPI_SckPrescaler_Div124 = 0x3Du, /*!< SCK output clock = AHB_CLK / 124. */
|
||
|
QSPI_SckPrescaler_Div126 = 0x3Eu, /*!< SCK output clock = AHB_CLK / 126. */
|
||
|
QSPI_SckPrescaler_Div128 = 0x3Fu, /*!< SCK output clock = AHB_CLK / 128. */
|
||
|
} QSPI_SckPrescaler_Type;
|
||
|
|
||
|
/*!
|
||
|
* @brief The cycle for CS pin to keep high level between two effective levels.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
QSPI_CsHighLevelCycle_2 = 0x00u, /*!< Keep 2 AHB_CLK cycles. */
|
||
|
QSPI_CsHighLevelCycle_3 = 0x01u, /*!< Keep 3 AHB_CLK cycles. */
|
||
|
QSPI_CsHighLevelCycle_4 = 0x02u, /*!< Keep 4 AHB_CLK cycles. */
|
||
|
QSPI_CsHighLevelCycle_5 = 0x03u, /*!< Keep 5 AHB_CLK cycles. */
|
||
|
QSPI_CsHighLevelCycle_6 = 0x04u, /*!< Keep 6 AHB_CLK cycles. */
|
||
|
QSPI_CsHighLevelCycle_7 = 0x05u, /*!< Keep 7 AHB_CLK cycles. */
|
||
|
QSPI_CsHighLevelCycle_8 = 0x06u, /*!< Keep 8 AHB_CLK cycles. */
|
||
|
QSPI_CsHighLevelCycle_9 = 0x07u, /*!< Keep 9 AHB_CLK cycles. */
|
||
|
} QSPI_CsHighLevelCycle_Type;
|
||
|
|
||
|
/*!
|
||
|
* @brief SPI mode, set the clock polarity(CPOL) & clock phase(CPHA).
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
QSPI_SpiMode_0 = 0x00u, /*!< SPI mode 0, CPOL = 0, CPHA = 0. */
|
||
|
QSPI_SpiMode_3 = 0x01u, /*!< SPI mode 0, CPOL = 1, CPHA = 1. */
|
||
|
} QSPI_SpiMode_Type;
|
||
|
|
||
|
/*!
|
||
|
* @brief Operation mode.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
QSPI_OpMode_Direct = 0x00u, /*!< Direct mode, read data from memory addr. */
|
||
|
QSPI_OpMode_Indirect = 0x02u, /*!< Indirect mode, read & write data by QSPI peripheral. */
|
||
|
QSPI_OpMode_Idle = 0x03u, /*!< Idle mode, cannot read data by direct mode. */
|
||
|
} QSPI_OpMode_Type;
|
||
|
|
||
|
/*!
|
||
|
* @brief Xfer direction.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
QSPI_XferDirection_Rx = 0x00u, /*!< Xfer data from mcu to external flash. */
|
||
|
QSPI_XferDirection_Tx = 0x01u, /*!< Xfer data from external flash to mcu. */
|
||
|
} QSPI_XferDirection_Type;
|
||
|
|
||
|
/*!
|
||
|
* @brief Word width, defines how many bits the word width.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
QSPI_WordWidth_8b = 0x00u, /*!< The word wide is 8 bit. */
|
||
|
QSPI_WordWidth_16b = 0x01u, /*!< The word wide is 16 bit. */
|
||
|
QSPI_WordWidth_24b = 0x02u, /*!< The word wide is 24 bit. */
|
||
|
QSPI_WordWidth_32b = 0x03u, /*!< The word wide is 32 bit. */
|
||
|
} QSPI_WordWidth_Type;
|
||
|
|
||
|
/*!
|
||
|
* @brief Line mode, defines how many lines to xfer data.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
QSPI_LineMode_None = 0x00u, /*!< Skip this phase. */
|
||
|
QSPI_LineMode_Single = 0x01u, /*!< Xfer data by signal line. (IO0) */
|
||
|
QSPI_LineMode_Dual = 0x02u, /*!< Xfer data by dual lines. (IO0, IO1) */
|
||
|
QSPI_LineMode_Quad = 0x03u, /*!< Xfer data by quad lines. (IO0, IO1, IO2, IO3)*/
|
||
|
} QSPI_LineMode_Type;
|
||
|
|
||
|
/*!
|
||
|
* @brief Dummy Cycle.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
QSPI_DummyCycle_0 = 0x00u, /*!< Keep 0 SCK output clock. */
|
||
|
QSPI_DummyCycle_1 = 0x01u, /*!< Keep 1 SCK output clock. */
|
||
|
QSPI_DummyCycle_2 = 0x02u, /*!< Keep 2 SCK output clock. */
|
||
|
QSPI_DummyCycle_3 = 0x03u, /*!< Keep 3 SCK output clock. */
|
||
|
QSPI_DummyCycle_4 = 0x04u, /*!< Keep 4 SCK output clock. */
|
||
|
QSPI_DummyCycle_5 = 0x05u, /*!< Keep 5 SCK output clock. */
|
||
|
QSPI_DummyCycle_6 = 0x06u, /*!< Keep 6 SCK output clock. */
|
||
|
QSPI_DummyCycle_7 = 0x07u, /*!< Keep 7 SCK output clock. */
|
||
|
QSPI_DummyCycle_8 = 0x08u, /*!< Keep 8 SCK output clock. */
|
||
|
QSPI_DummyCycle_9 = 0x09u, /*!< Keep 9 SCK output clock. */
|
||
|
QSPI_DummyCycle_10 = 0x0Au, /*!< Keep 10 SCK output clock. */
|
||
|
QSPI_DummyCycle_11 = 0x0Bu, /*!< Keep 11 SCK output clock. */
|
||
|
QSPI_DummyCycle_12 = 0x0Cu, /*!< Keep 12 SCK output clock. */
|
||
|
QSPI_DummyCycle_13 = 0x0Du, /*!< Keep 13 SCK output clock. */
|
||
|
QSPI_DummyCycle_14 = 0x0Eu, /*!< Keep 14 SCK output clock. */
|
||
|
QSPI_DummyCycle_15 = 0x0Fu, /*!< Keep 15 SCK output clock. */
|
||
|
QSPI_DummyCycle_16 = 0x10u, /*!< Keep 16 SCK output clock. */
|
||
|
QSPI_DummyCycle_17 = 0x11u, /*!< Keep 17 SCK output clock. */
|
||
|
QSPI_DummyCycle_18 = 0x12u, /*!< Keep 18 SCK output clock. */
|
||
|
QSPI_DummyCycle_19 = 0x13u, /*!< Keep 19 SCK output clock. */
|
||
|
QSPI_DummyCycle_20 = 0x14u, /*!< Keep 20 SCK output clock. */
|
||
|
QSPI_DummyCycle_21 = 0x15u, /*!< Keep 21 SCK output clock. */
|
||
|
QSPI_DummyCycle_22 = 0x16u, /*!< Keep 22 SCK output clock. */
|
||
|
QSPI_DummyCycle_23 = 0x17u, /*!< Keep 23 SCK output clock. */
|
||
|
QSPI_DummyCycle_24 = 0x18u, /*!< Keep 24 SCK output clock. */
|
||
|
QSPI_DummyCycle_25 = 0x19u, /*!< Keep 25 SCK output clock. */
|
||
|
QSPI_DummyCycle_26 = 0x1Au, /*!< Keep 26 SCK output clock. */
|
||
|
QSPI_DummyCycle_27 = 0x1Bu, /*!< Keep 27 SCK output clock. */
|
||
|
QSPI_DummyCycle_28 = 0x1Cu, /*!< Keep 28 SCK output clock. */
|
||
|
QSPI_DummyCycle_29 = 0x1Du, /*!< Keep 29 SCK output clock. */
|
||
|
QSPI_DummyCycle_30 = 0x1Eu, /*!< Keep 30 SCK output clock. */
|
||
|
QSPI_DummyCycle_31 = 0x1Fu, /*!< Keep 31 SCK output clock. */
|
||
|
} QSPI_DummyCycle_Type;
|
||
|
|
||
|
/*!
|
||
|
* @brief This type of structure instance is used to keep the settings when calling the @ref QSPI_Init() to initialize the QSPI module.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
QSPI_SckPrescaler_Type SckPrescaler; /*!< Specify the QSPI SCK Prescaler. */
|
||
|
QSPI_CsHighLevelCycle_Type CsHighLevelCycle; /*!< Specify the QSPI CS High Level Cycle. */
|
||
|
QSPI_SpiMode_Type SpiMode; /*!< Specify the SPI mode. */
|
||
|
} QSPI_Init_Type;
|
||
|
|
||
|
/*!
|
||
|
* @brief This type of structure instance is used to keep the settings when calling the @ref QSPI_EnableDirectXferConf() to enable direct mode.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
QSPI_LineMode_Type CmdLineMode; /*!< Specify the QSPI instruction line mode. */
|
||
|
uint32_t CmdValue; /*!< Specify the QSPI instruction value. */
|
||
|
QSPI_WordWidth_Type AddrWidth; /*!< Specify the QSPI addr bit width. */
|
||
|
QSPI_LineMode_Type AddrLineMode; /*!< Specify the QSPI addr line mode. */
|
||
|
QSPI_WordWidth_Type AltWidth; /*!< Specify the QSPI alt bit width. */
|
||
|
QSPI_LineMode_Type AltLineMode; /*!< Specify the QSPI alt line mode. */
|
||
|
uint32_t AltValue; /*!< Specify the QSPI alt value. */
|
||
|
QSPI_DummyCycle_Type DummyCycles; /*!< Specify the QSPI dummy cycles. */
|
||
|
QSPI_LineMode_Type DataLineMode; /*!< Specify the QSPI data line mode. */
|
||
|
} QSPI_DirectXferConf_Type;
|
||
|
|
||
|
/*!
|
||
|
* @brief This type of structure instance is used to keep the settings when calling the @ref QSPI_EnableIndirectXferConf() to enable xfer.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
bool AutoEnableXIP; /*!< Specify the QSPI enbale XIP mode after quit Indirect mode. */
|
||
|
QSPI_XferDirection_Type XferDirection; /*!< Specify the QSPI xfer direction. */
|
||
|
QSPI_LineMode_Type CmdLineMode; /*!< Specify the QSPI instruction line mode. */
|
||
|
uint32_t CmdValue; /*!< Specify the QSPI instruction value. */
|
||
|
QSPI_WordWidth_Type AddrWidth; /*!< Specify the QSPI addr bit width. */
|
||
|
QSPI_LineMode_Type AddrLineMode; /*!< Specify the QSPI addr line mode. */
|
||
|
uint32_t AddrValue; /*!< Specify the QSPI addr value. */
|
||
|
QSPI_WordWidth_Type AltWidth; /*!< Specify the QSPI alt bit width. */
|
||
|
QSPI_LineMode_Type AltLineMode; /*!< Specify the QSPI alt line mode. */
|
||
|
uint32_t AltValue; /*!< Specify the QSPI alt value. */
|
||
|
QSPI_DummyCycle_Type DummyCycles; /*!< Specify the QSPI dummy cycles. */
|
||
|
QSPI_WordWidth_Type DataWidth; /*!< Specify the QSPI data bit width. */
|
||
|
QSPI_LineMode_Type DataLineMode; /*!< Specify the QSPI data line mode. */
|
||
|
uint32_t DataLength; /*!< Specify the QSPI data data length. */
|
||
|
} QSPI_IndirectXferConf_Type;
|
||
|
|
||
|
/*!
|
||
|
* @brief Initialize the QSPI module.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @param init Pointer to the initialization structure. See to @ref QSPI_Init_Type.
|
||
|
* @return None.
|
||
|
*/
|
||
|
void QSPI_Init(QSPI_Type * QSPIx, QSPI_Init_Type * init);
|
||
|
|
||
|
/*!
|
||
|
* @brief Get the current status flags of the QSPI module.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @return Status flags. See to @ref QSPI_STATUS.
|
||
|
*/
|
||
|
uint32_t QSPI_GetStatus(QSPI_Type * QSPIx);
|
||
|
|
||
|
/*!
|
||
|
* @brief Clear the interrupts status flags of the QSPI module.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @param status The mask codes of the indicated status flags to be cleared.
|
||
|
* @return Status flags. See to @ref QSPI_INT.
|
||
|
*/
|
||
|
void QSPI_ClearStatus(QSPI_Type * QSPIx, uint32_t status);
|
||
|
|
||
|
/*!
|
||
|
* @brief Gets the current operating mode.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @return Operation, See to @ref QSPI_OpMode_Type.
|
||
|
*/
|
||
|
uint32_t QSPI_GetOpMode(QSPI_Type * QSPIx);
|
||
|
|
||
|
/*!
|
||
|
* @brief Enable the QSPI direct mode configure.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @param conf Pointer to the initialization structure. See to @ref QSPI_DirectXferConf_Type.
|
||
|
* @return None.
|
||
|
*/
|
||
|
void QSPI_EnableDirectXferConf(QSPI_Type * QSPIx, QSPI_DirectXferConf_Type * conf);
|
||
|
|
||
|
/*!
|
||
|
* @brief Enable the QSPI XIP mode.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @param enable 'true' to enable XIP, 'false' to disable XIP.
|
||
|
* @return None.
|
||
|
*/
|
||
|
void QSPI_EnableXIP(QSPI_Type * QSPIx, bool enable);
|
||
|
|
||
|
/*!
|
||
|
* @brief Set the QSPI indirect xfer.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @param conf Pointer to the config structure. See to @ref QSPI_IndirectXferConf_Type.
|
||
|
* @return None.
|
||
|
*/
|
||
|
void QSPI_SetIndirectXferConf(QSPI_Type * QSPIx, QSPI_IndirectXferConf_Type * conf);
|
||
|
|
||
|
/*!
|
||
|
* @brief Put the data into FIFO of the QSPI module.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @param value Data value to be send through the FIFO.
|
||
|
* @return None.
|
||
|
*/
|
||
|
void QSPI_PutDataIndirect(QSPI_Type * QSPIx, uint32_t value);
|
||
|
|
||
|
/*!
|
||
|
* @brief Get the data from FIFO of the QSPI module.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @return The data value received from the FIFO.
|
||
|
*/
|
||
|
uint32_t QSPI_GetDataIndirect(QSPI_Type * QSPIx);
|
||
|
|
||
|
/*!
|
||
|
* @brief Get the data from memory addr as 8 bit.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @return The data value received from the FIFO.
|
||
|
*/
|
||
|
uint8_t QSPI_GetDataDirect8(QSPI_Type * QSPIx, uint32_t addr);
|
||
|
|
||
|
/*!
|
||
|
* @brief Get the data from memory addr as 16 bit.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @return The data value received from the FIFO.
|
||
|
*/
|
||
|
uint16_t QSPI_GetDataDirect16(QSPI_Type * QSPIx, uint32_t addr);
|
||
|
|
||
|
/*!
|
||
|
* @brief Get the data from memory addr as 32 bit.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @return The data value received from the FIFO.
|
||
|
*/
|
||
|
uint32_t QSPI_GetDataDirect32(QSPI_Type * QSPIx, uint32_t addr);
|
||
|
|
||
|
/*!
|
||
|
* @brief Enable interrupts of the QSPI module.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @param interrupts Interrupt code masks. See to @ref QSPI_INT.
|
||
|
* @param enable 'true' to enable the indicated interrupts, 'false' to disable the indicated interrupts.
|
||
|
* @return None.
|
||
|
*/
|
||
|
void QSPI_EnableInterrupts(QSPI_Type * QSPIx, uint32_t interrupts, bool enable);
|
||
|
|
||
|
/*!
|
||
|
* @brief Enable DMA request of the QSPI module.
|
||
|
*
|
||
|
* @param QSPIx QSPI instance.
|
||
|
* @param dmas dma request code masks. See to @ref QSPI_DMA.
|
||
|
* @param enable 'true' to enable the indicated request, 'false' to disable the indicated request.
|
||
|
* @return None.
|
||
|
*/
|
||
|
void QSPI_EnableDMA(QSPI_Type * QSPIx, uint32_t dmas, bool enable);
|
||
|
|
||
|
/*!
|
||
|
*@}
|
||
|
*/
|
||
|
|
||
|
#endif /* __HAL_QSPI_H__ */
|