STM32CubeWL/Drivers/BSP/B-WL5M-SUBG/b_wl5m_subg_flash.h

153 lines
4.6 KiB
C

/**
******************************************************************************
* @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 */