/** ****************************************************************************** * @file b_wl5m_subg_flash.h * @author MCD Application Team * @brief This file contains the common defines and functions prototypes for * the b_wl5m_subg_flash.c driver. ****************************************************************************** * @attention * * Copyright (c) 2022 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 __B_WL5M_SUBG_FLASH_H #define __B_WL5M_SUBG_FLASH_H #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* Includes ------------------------------------------------------------------*/ #include "stm32wlxx_hal.h" #include "b_wl5m_subg_errno.h" #include "mx25l4006.h" /** @addtogroup BSP * @{ */ /** @addtogroup B_WL5M_SUBG * @{ */ /** @addtogroup B_WL5M_SUBG_SPI_FLASH * @{ */ /** @defgroup B_WL5M_SUBG_SPI_FLASH_Exported_Types B-WL5M-SUBG SPI FLASH Exported Types * @{ */ #define BSP_SPI_FLASH_Info_t MX25L4006_Info_t #define BSP_SPI_FLASH_Erase_t MX25L4006_Erase_t typedef enum { SPI_ACCESS_NONE = 0, /*!< Instance not initialized, */ SPI_ACCESS, /*!< Instance use SPI access mode */ } SPI_Access_t; typedef struct { SPI_Access_t IsInitialized; /*!< Instance access Flash method */ } SPI_FLASH_Ctx_t; /** * @} */ /* Exported constants --------------------------------------------------------*/ /** @defgroup B_WL5M_SUBG_SPI_FLASH_Exported_Constants B-WL5M-SUBG SPI FLASH Exported Constants * @{ */ #define SPI_FLASH_INSTANCES_NUMBER 1U /** * @brief FLASH GPIO definition */ #define FLASH_CHIP_SELECT_PIN GPIO_PIN_6 #define FLASH_CHIP_SELECT_PORT GPIOB #define FLASH_HOLD_PIN GPIO_PIN_7 #define FLASH_HOLD_PORT GPIOB #define FLASH_SPI_CLK_PIN GPIO_PIN_13 #define FLASH_SPI_CLK_PORT GPIOB #define FLASH_SPI_MOSI_PIN GPIO_PIN_10 #define FLASH_SPI_MOSI_PORT GPIOA #define FLASH_SPI_MISO_PIN GPIO_PIN_2 #define FLASH_SPI_MISO_PORT GPIOC /** * @} */ /* Exported variables --------------------------------------------------------*/ /** @defgroup B_WL5M_SUBG_SPI_FLASH_Exported_Variables B-WL5M-SUBG SPI FLASH Exported Variables * @{ */ extern SPI_HandleTypeDef hspi_flash[SPI_FLASH_INSTANCES_NUMBER]; extern SPI_FLASH_Ctx_t Spi_Flash_Ctx[SPI_FLASH_INSTANCES_NUMBER]; /** * @} */ /* Exported functions --------------------------------------------------------*/ /** @defgroup B_WL5M_SUBG_SPI_FLASH_Exported_Functions B-WL5M-SUBG SPI FLASH Exported Functions * @{ */ int32_t BSP_FLASH_Init(uint32_t Instance); int32_t BSP_FLASH_DeInit(uint32_t Instance); int32_t BSP_FLASH_Read(uint32_t Instance, uint8_t *pData, uint32_t StartAddress, uint16_t DataSize); int32_t BSP_FLASH_FastRead(uint32_t Instance, uint8_t *pData, uint32_t StartAddress, uint16_t DataSize); int32_t BSP_FLASH_Write(uint32_t Instance, uint8_t *pData, uint32_t StartAddress, uint16_t DataSize); int32_t BSP_FLASH_Erase_Sector(uint32_t Instance, uint32_t SectorAddress); int32_t BSP_FLASH_Erase_Block(uint32_t Instance, uint32_t BlockAddress, BSP_SPI_FLASH_Erase_t BlockSize); int32_t BSP_FLASH_Erase_Chip(uint32_t Instance); int32_t BSP_FLASH_GetStatus(uint32_t Instance); int32_t BSP_FLASH_GetInfo(uint32_t Instance, BSP_SPI_FLASH_Info_t *pInfo); int32_t BSP_FLASH_ReadID(uint32_t Instance, uint8_t *ID); int32_t BSP_FLASH_ReadSFDP(uint32_t Instance, uint8_t *pData, uint32_t Address, uint16_t DataSize); int32_t BSP_FLASH_ReadStatusRegister(uint32_t Instance, uint8_t *Status); int32_t BSP_FLASH_BlockProtectConfig(uint32_t Instance, uint8_t level); int32_t BSP_FLASH_EnterDeepPowerDown(uint32_t Instance); int32_t BSP_FLASH_LeaveDeepPowerDown(uint32_t Instance); /* This function can be modified in case the current settings need to be changed for specific application needs */ HAL_StatusTypeDef MX_SPI_FLASH_Init(SPI_HandleTypeDef *hspi); /** * @} */ /** * @} */ /** * @} */ /** * @} */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __B_WL5M_SUBG_FLASH_H */