init
This commit is contained in:
commit
75fbf8809d
489 files changed
+398278
No files matched your search
@@ -0,0 +1,354 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file stm32_sdcard_driver.c
|
||||
* @author MCD Application Team
|
||||
* @brief This file implements the SDCARD 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.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "stm32_extmem.h"
|
||||
#include "stm32_extmem_conf.h"
|
||||
#if EXTMEM_DRIVER_SDCARD == 1
|
||||
#if EXTMEM_SAL_SD == 1
|
||||
#include "../sal/stm32_sal_sd_api.h"
|
||||
#endif /* EXTMEM_SAL_SD */
|
||||
#if EXTMEM_SAL_MMC == 1
|
||||
#include "../sal/stm32_sal_mmc_api.h"
|
||||
#endif /* EXTMEM_SAL_MMC */
|
||||
|
||||
#include "stm32_sdcard_driver_api.h"
|
||||
#if EXTMEM_DRIVER_SDCARD_DEBUG_LEVEL > 0 && defined(EXTMEM_MACRO_DEBUG)
|
||||
#include "string.h"
|
||||
#include "stdio.h"
|
||||
#endif /* EXTMEM_DRIVER_SDCARD_DEBUG_LEVEL > 0 || defined(EXTMEM_MACRO_DEBUG) */
|
||||
|
||||
/** @defgroup SDCARD SDCARD driver
|
||||
* @ingroup EXTMEM_DRIVER
|
||||
* @{
|
||||
*/
|
||||
|
||||
/* Private Macros ------------------------------------------------------------*/
|
||||
/** @defgroup SDCARD_Private_Macro Private Macro
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Default Timeout value (ms)
|
||||
*/
|
||||
#define DRIVER_DEFAULT_TIMEOUT 300
|
||||
|
||||
/**
|
||||
* @brief Debug macro for a string.
|
||||
*/
|
||||
#if EXTMEM_DRIVER_SDCARD_DEBUG_LEVEL > 0 && defined(EXTMEM_MACRO_DEBUG)
|
||||
#define SDCARD_DEBUG_STR(_STR_) { \
|
||||
EXTMEM_MACRO_DEBUG("\tSDCARD::"); \
|
||||
EXTMEM_MACRO_DEBUG(_STR_); \
|
||||
EXTMEM_MACRO_DEBUG("\n\r"); \
|
||||
}
|
||||
#else
|
||||
#define SDCARD_DEBUG_STR(_STR_)
|
||||
#endif /* EXTMEM_DRIVER_SDCARD_DEBUG_LEVEL > 0 || defined(EXTMEM_MACRO_DEBUG) */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/* Private typedefs ---------------------------------------------------------*/
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
/* Private functions ---------------------------------------------------------*/
|
||||
/** @defgroup SDCARD_Exported_Functions Exported Functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Initializes the SDCARD driver.
|
||||
* @param Peripheral Pointer to the peripheral object.
|
||||
* @param SDCARDObject Pointer to the SDCARD driver object.
|
||||
* @retval @ref EXTMEM_DRIVER_SDCARD_StatusTypeDef
|
||||
*/
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_Init(void *Peripheral,
|
||||
EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject)
|
||||
{
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef retr = EXTMEM_DRIVER_SDCARD_OK;
|
||||
|
||||
/* initialize the instance */
|
||||
SDCARD_DEBUG_STR("initialize the instance")
|
||||
switch (SDCARDObject->sdcard_public.Link)
|
||||
{
|
||||
case EXTMEM_DRIVER_SDCARD_LINKSD :
|
||||
if (HAL_OK != SAL_SD_Init(&SDCARDObject->sdcard_private.SALObject.SDObject, Peripheral,
|
||||
&SDCARDObject->sdcard_private.Info))
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR;
|
||||
}
|
||||
break;
|
||||
#if EXTMEM_SAL_MMC == 1
|
||||
case EXTMEM_DRIVER_SDCARD_LINKMMC:
|
||||
if (HAL_OK != SAL_MMC_Init(&SDCARDObject->SALObject.MMCObject, Peripheral))
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR;
|
||||
}
|
||||
break;
|
||||
#endif /* EXTMEM_SAL_MMC == 1 */
|
||||
default :
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR_LINKTYPE;
|
||||
break;
|
||||
}
|
||||
|
||||
return retr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Deinitializes the SDCARD driver.
|
||||
* @param SDCARDObject Pointer to the SDCARD driver object.
|
||||
* @retval @ref EXTMEM_DRIVER_SDCARD_StatusTypeDef
|
||||
*/
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_DeInit(EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject)
|
||||
{
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef retr = EXTMEM_DRIVER_SDCARD_OK;
|
||||
SDCARDObject->sdcard_private.Info.BlockNbr = 0;
|
||||
return retr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Reads data from the SDCARD memory.
|
||||
* @param SDCARDObject Pointer to the SDCARD driver object.
|
||||
* @param Address Memory address.
|
||||
* @param Data Pointer to the data buffer to store the read data.
|
||||
* @param Size Size of data to read (in bytes).
|
||||
* @retval @ref EXTMEM_DRIVER_SDCARD_StatusTypeDef
|
||||
*/
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_Read(EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject,
|
||||
uint32_t Address, uint8_t *Data, uint32_t Size)
|
||||
{
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef retr = EXTMEM_DRIVER_SDCARD_OK;
|
||||
HAL_StatusTypeDef hal_status = HAL_OK;
|
||||
uint32_t block_size = SDCARDObject->sdcard_private.Info.BlockSize;
|
||||
|
||||
if (block_size == 0u)
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32_t block_num = Address / block_size;
|
||||
uint32_t block_count = Size / block_size;
|
||||
|
||||
/* Check if Address and size are multiple of block size */
|
||||
if (((Address % block_size) != 0u) || ((Size % block_size) != 0u))
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR_PARAM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (block_count > SDCARDObject->sdcard_private.Info.BlockNbr)
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR_PARAM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
switch (SDCARDObject->sdcard_public.Link)
|
||||
{
|
||||
case EXTMEM_DRIVER_SDCARD_LINKSD :
|
||||
hal_status = SAL_SD_ReadData(&SDCARDObject->sdcard_private.SALObject.SDObject, block_num, Data, block_count);
|
||||
break;
|
||||
#if EXTMEM_SAL_MMC == 1
|
||||
case EXTMEM_DRIVER_SDCARD_LINKMMC:
|
||||
hal_status = SAL_MMC_Read(&SDCARDObject->sdcard_private.SALObject.MMCObject, block_num, Data, block_count);
|
||||
break;
|
||||
#endif /* EXTMEM_SAL_MMC == 1 */
|
||||
default :
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR_LINKTYPE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (HAL_OK != hal_status)
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR_READ;
|
||||
}
|
||||
}
|
||||
error:
|
||||
return retr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Writes data to the SDCARD memory.
|
||||
* @param SDCARDObject Pointer to the SDCARD driver object.
|
||||
* @param Address Memory address.
|
||||
* @param Data Pointer to the data buffer to be written.
|
||||
* @param Size Size of data to be written (in bytes).
|
||||
* @retval @ref EXTMEM_DRIVER_SDCARD_StatusTypeDef
|
||||
*/
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_Write(EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject,
|
||||
uint32_t Address, const uint8_t *Data, uint32_t Size)
|
||||
{
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef retr = EXTMEM_DRIVER_SDCARD_OK;
|
||||
HAL_StatusTypeDef hal_status = HAL_OK;
|
||||
uint32_t block_size = SDCARDObject->sdcard_private.Info.BlockSize;
|
||||
if (block_size == 0u)
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32_t block_num = Address / block_size;
|
||||
uint32_t block_count = Size / block_size;
|
||||
|
||||
/* Check if Address and size are multiple of block size */
|
||||
if (((Address % block_size) != 0u) || ((Size % block_size) != 0u))
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR_PARAM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (block_count > SDCARDObject->sdcard_private.Info.BlockNbr)
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR_PARAM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
switch (SDCARDObject->sdcard_public.Link)
|
||||
{
|
||||
case EXTMEM_DRIVER_SDCARD_LINKSD :
|
||||
hal_status = SAL_SD_WriteData(&SDCARDObject->sdcard_private.SALObject.SDObject, block_num, Data, block_count);
|
||||
break;
|
||||
case EXTMEM_DRIVER_SDCARD_LINKMMC:
|
||||
default :
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR_LINKTYPE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (HAL_OK != hal_status)
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR_WRITE;
|
||||
}
|
||||
}
|
||||
error:
|
||||
return retr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Erases blocks in the SDCARD memory.
|
||||
* @param SDCARDObject Pointer to the SDCARD driver object.
|
||||
* @param Address Memory address.
|
||||
* @param Size Size of data to erase (in bytes).
|
||||
* @retval @ref EXTMEM_DRIVER_SDCARD_StatusTypeDef
|
||||
*/
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_EraseBlock(EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject,
|
||||
uint32_t Address, uint32_t Size)
|
||||
{
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef retr = EXTMEM_DRIVER_SDCARD_OK;
|
||||
HAL_StatusTypeDef hal_status = HAL_OK;
|
||||
uint32_t block_size = SDCARDObject->sdcard_private.Info.BlockSize;
|
||||
|
||||
if (block_size == 0u)
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32_t block_num = Address / block_size;
|
||||
uint32_t block_count = Size / block_size;
|
||||
|
||||
if ((Size % block_size) != 0u)
|
||||
{
|
||||
block_count = block_count + 1u;
|
||||
}
|
||||
|
||||
/* Check if Address is multiple of block size */
|
||||
if ((Address % block_size) != 0u)
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR_PARAM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (block_count > SDCARDObject->sdcard_private.Info.BlockNbr)
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR_PARAM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
switch (SDCARDObject->sdcard_public.Link)
|
||||
{
|
||||
case EXTMEM_DRIVER_SDCARD_LINKSD :
|
||||
hal_status = SAL_SD_EraseBlock(&SDCARDObject->sdcard_private.SALObject.SDObject, block_num, block_count);
|
||||
break;
|
||||
case EXTMEM_DRIVER_SDCARD_LINKMMC:
|
||||
default :
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR_LINKTYPE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (HAL_OK != hal_status)
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR;
|
||||
}
|
||||
}
|
||||
error:
|
||||
return retr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Performs a mass erase of the SDCARD memory.
|
||||
* @param SDCARDObject Pointer to the SDCARD driver object.
|
||||
* @retval @ref EXTMEM_DRIVER_SDCARD_StatusTypeDef
|
||||
*/
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_Erase(EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject)
|
||||
{
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef retr = EXTMEM_DRIVER_SDCARD_OK;
|
||||
HAL_StatusTypeDef hal_status = HAL_OK;
|
||||
switch (SDCARDObject->sdcard_public.Link)
|
||||
{
|
||||
case EXTMEM_DRIVER_SDCARD_LINKSD :
|
||||
hal_status = SAL_SD_MassErase(&SDCARDObject->sdcard_private.SALObject.SDObject);
|
||||
break;
|
||||
case EXTMEM_DRIVER_SDCARD_LINKMMC:
|
||||
default :
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR_LINKTYPE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (HAL_OK != hal_status)
|
||||
{
|
||||
retr = EXTMEM_DRIVER_SDCARD_ERROR;
|
||||
}
|
||||
return retr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Retrieves SDCARD information.
|
||||
* @param SDCARDObject Pointer to the SDCARD driver object.
|
||||
* @param Info Pointer to the SDCARD information structure to be filled.
|
||||
* @retval @ref EXTMEM_DRIVER_SDCARD_StatusTypeDef
|
||||
*/
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_GetInfo(EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject,
|
||||
EXTMEM_DRIVER_SDCARD_InfoTypeDef *Info)
|
||||
{
|
||||
Info->BlockSize = SDCARDObject->sdcard_private.Info.BlockSize;
|
||||
Info->BlockNbr = SDCARDObject->sdcard_private.Info.BlockNbr;
|
||||
return EXTMEM_DRIVER_SDCARD_OK;
|
||||
}
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
#endif /* EXTMEM_DRIVER_SDCARD == 1 */
|
||||
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file stm32_sdcard_driver_api.h
|
||||
* @author MCD Application Team
|
||||
* @brief This file contains SDCARD driver API definitions.
|
||||
******************************************************************************
|
||||
* @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 __STM32_SDCARD_DRIVER_API_H
|
||||
#define __STM32_SDCARD_DRIVER_API_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#if EXTMEM_DRIVER_SDCARD == 1
|
||||
|
||||
/** @addtogroup SDCARD
|
||||
* @ingroup EXTMEM_DRIVER
|
||||
* @{
|
||||
*/
|
||||
|
||||
/* Exported constants --------------------------------------------------------*/
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
|
||||
/** @addtogroup SDCARD_Exported_Types
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Enumeration of error codes for the SDCARD driver.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
EXTMEM_DRIVER_SDCARD_OK = 0, /*!< status ok */
|
||||
EXTMEM_DRIVER_SDCARD_ERROR_LINKTYPE = -1, /*!< error on the link type */
|
||||
EXTMEM_DRIVER_SDCARD_ERROR_READ = -2, /*!< error on the read operation */
|
||||
EXTMEM_DRIVER_SDCARD_ERROR_WRITE = -3, /*!< error on the write operation */
|
||||
EXTMEM_DRIVER_SDCARD_ERROR_PARAM = -4, /*!< error on the parameter */
|
||||
EXTMEM_DRIVER_SDCARD_ERROR = -128, /*!< error */
|
||||
} EXTMEM_DRIVER_SDCARD_StatusTypeDef;
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/* Exported functions --------------------------------------------------------*/
|
||||
/**
|
||||
* @addtogroup SDCARD_Exported_Functions Exported Functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_Init(void *Peripheral,
|
||||
EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject);
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_DeInit(EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject);
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_Read(EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject,
|
||||
uint32_t Address, uint8_t *Data, uint32_t Size);
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_Write(EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject,
|
||||
uint32_t Address, const uint8_t *Data, uint32_t Size);
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_EraseBlock(EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject,
|
||||
uint32_t Address, uint32_t Size);
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_Erase(EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject);
|
||||
EXTMEM_DRIVER_SDCARD_StatusTypeDef EXTMEM_DRIVER_SDCARD_GetInfo(EXTMEM_DRIVER_SDCARD_ObjectTypeDef *SDCARDObject,
|
||||
EXTMEM_DRIVER_SDCARD_InfoTypeDef *Info);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
#endif /* EXTMEM_DRIVER_SDCARD == 1 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __STM32_SDCARD_DRIVER_API_H */
|
||||
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file stm32_sdcard_type.h
|
||||
* @author MCD Application Team
|
||||
* @brief This file contains SDCARD driver type definitions.
|
||||
******************************************************************************
|
||||
* @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 __STM32_SDCARD_TYPE_H
|
||||
#define __STM32_SDCARD_TYPE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#if EXTMEM_DRIVER_SDCARD == 1
|
||||
|
||||
/** @addtogroup SDCARD
|
||||
* @ingroup EXTMEM_DRIVER
|
||||
* @{
|
||||
*/
|
||||
/* Exported constants --------------------------------------------------------*/
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
/** @defgroup SDCARD_Exported_Types Exported Types
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Enumeration of physical link types for SDCARD communication.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
EXTMEM_DRIVER_SDCARD_LINKSD, /*!< link SD card */
|
||||
EXTMEM_DRIVER_SDCARD_LINKMMC, /*!< link EMMC card */
|
||||
EXTMEM_DRIVER_SDCARD_LINKSPI /*!< link SPI card */
|
||||
} SDCardLinkTypeDef;
|
||||
|
||||
/**
|
||||
* @brief Driver SDCARD instance definition
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
SDCardLinkTypeDef Link; /*!< Physical link type. */
|
||||
} sdcard_public;
|
||||
|
||||
struct
|
||||
{
|
||||
EXTMEM_DRIVER_SDCARD_InfoTypeDef Info; /*!< SDCARD information. */
|
||||
union
|
||||
{
|
||||
#if EXTMEM_SAL_SD == 1
|
||||
SAL_SD_ObjectTypeDef SDObject; /*!< SAL SD object. */
|
||||
#endif /* EXTMEM_SAL_SD == 1 */
|
||||
#if EXTMEM_SAL_MMC == 1
|
||||
SAL_MMC_ObjectTypeDef MMCObject; /*!< SAL MMC object. */
|
||||
#endif /* EXTMEM_SAL_MMC == 1 */
|
||||
} SALObject;
|
||||
} sdcard_private;
|
||||
|
||||
} EXTMEM_DRIVER_SDCARD_ObjectTypeDef;
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/* Exported functions --------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
#endif /* EXTMEM_DRIVER_SDCARD == 1 */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __STM32_SDCARD_TYPE_H */
|
||||
Reference in new issue
Block a user