📄 sdcard.h
字号:
#define SDIO_SDIO_RW_DIRECT ((uint8_t)52) /* For SD I/O Card only */
#define SDIO_SDIO_RW_EXTENDED ((uint8_t)53) /* For SD I/O Card only */
/* Following commands are SD Card Specific security commands.
SDIO_APP_CMD should be sent before sending these commands. */
#define SDIO_SD_APP_GET_MKB ((uint8_t)43) /* For SD Card only */
#define SDIO_SD_APP_GET_MID ((uint8_t)44) /* For SD Card only */
#define SDIO_SD_APP_SET_CER_RN1 ((uint8_t)45) /* For SD Card only */
#define SDIO_SD_APP_GET_CER_RN2 ((uint8_t)46) /* For SD Card only */
#define SDIO_SD_APP_SET_CER_RES2 ((uint8_t)47) /* For SD Card only */
#define SDIO_SD_APP_GET_CER_RES1 ((uint8_t)48) /* For SD Card only */
#define SDIO_SD_APP_SECURE_READ_MULTIPLE_BLOCK ((uint8_t)18) /* For SD Card only */
#define SDIO_SD_APP_SECURE_WRITE_MULTIPLE_BLOCK ((uint8_t)25) /* For SD Card only */
#define SDIO_SD_APP_SECURE_ERASE ((uint8_t)38) /* For SD Card only */
#define SDIO_SD_APP_CHANGE_SECURE_AREA ((uint8_t)49) /* For SD Card only */
#define SDIO_SD_APP_SECURE_WRITE_MKB ((uint8_t)48) /* For SD Card only */
typedef enum
{
SD_NO_TRANSFER = 0,
SD_TRANSFER_IN_PROGRESS
} SDTransferState;
typedef struct
{
uint16_t TransferredBytes;
SD_Error TransferError;
uint8_t padding;
} SDLastTransferInfo;
typedef struct /* Card Specific Data */
{
__IO uint8_t CSDStruct; /* CSD structure */
__IO uint8_t SysSpecVersion; /* System specification version */
__IO uint8_t Reserved1; /* Reserved */
__IO uint8_t TAAC; /* Data read access-time 1 */
__IO uint8_t NSAC; /* Data read access-time 2 in CLK cycles */
__IO uint8_t MaxBusClkFrec; /* Max. bus clock frequency */
__IO uint16_t CardComdClasses; /* Card command classes */
__IO uint8_t RdBlockLen; /* Max. read data block length */
__IO uint8_t PartBlockRead; /* Partial blocks for read allowed */
__IO uint8_t WrBlockMisalign; /* Write block misalignment */
__IO uint8_t RdBlockMisalign; /* Read block misalignment */
__IO uint8_t DSRImpl; /* DSR implemented */
__IO uint8_t Reserved2; /* Reserved */
__IO uint32_t DeviceSize; /* Device Size */
__IO uint8_t MaxRdCurrentVDDMin; /* Max. read current @ VDD min */
__IO uint8_t MaxRdCurrentVDDMax; /* Max. read current @ VDD max */
__IO uint8_t MaxWrCurrentVDDMin; /* Max. write current @ VDD min */
__IO uint8_t MaxWrCurrentVDDMax; /* Max. write current @ VDD max */
__IO uint8_t DeviceSizeMul; /* Device size multiplier */
__IO uint8_t EraseGrSize; /* Erase group size */
__IO uint8_t EraseGrMul; /* Erase group size multiplier */
__IO uint8_t WrProtectGrSize; /* Write protect group size */
__IO uint8_t WrProtectGrEnable; /* Write protect group enable */
__IO uint8_t ManDeflECC; /* Manufacturer default ECC */
__IO uint8_t WrSpeedFact; /* Write speed factor */
__IO uint8_t MaxWrBlockLen; /* Max. write data block length */
__IO uint8_t WriteBlockPaPartial; /* Partial blocks for write allowed */
__IO uint8_t Reserved3; /* Reserded */
__IO uint8_t ContentProtectAppli; /* Content protection application */
__IO uint8_t FileFormatGrouop; /* File format group */
__IO uint8_t CopyFlag; /* Copy flag (OTP) */
__IO uint8_t PermWrProtect; /* Permanent write protection */
__IO uint8_t TempWrProtect; /* Temporary write protection */
__IO uint8_t FileFormat; /* File Format */
__IO uint8_t ECC; /* ECC code */
__IO uint8_t CSD_CRC; /* CSD CRC */
__IO uint8_t Reserved4; /* always 1*/
} SD_CSD;
typedef struct /*Card Identification Data*/
{
__IO uint8_t ManufacturerID; /* ManufacturerID */
__IO uint16_t OEM_AppliID; /* OEM/Application ID */
__IO uint32_t ProdName1; /* Product Name part1 */
__IO uint8_t ProdName2; /* Product Name part2*/
__IO uint8_t ProdRev; /* Product Revision */
__IO uint32_t ProdSN; /* Product Serial Number */
__IO uint8_t Reserved1; /* Reserved1 */
__IO uint16_t ManufactDate; /* Manufacturing Date */
__IO uint8_t CID_CRC; /* CID CRC */
__IO uint8_t Reserved2; /* always 1 */
} SD_CID;
typedef struct
{
SD_CSD SD_csd;
SD_CID SD_cid;
uint32_t CardCapacity; /* Card Capacity */
uint32_t CardBlockSize; /* Card Block Size */
uint16_t RCA;
uint8_t CardType;
} SD_CardInfo;
/* Exported constants --------------------------------------------------------*/
#define SD_DMA_MODE ((uint32_t)0x00000000)
#define SD_INTERRUPT_MODE ((uint32_t)0x00000001)
#define SD_POLLING_MODE ((uint32_t)0x00000002)
/* Supported Memory Cards */
#define SDIO_STD_CAPACITY_SD_CARD_V1_1 ((uint32_t)0x0)
#define SDIO_STD_CAPACITY_SD_CARD_V2_0 ((uint32_t)0x1)
#define SDIO_HIGH_CAPACITY_SD_CARD ((uint32_t)0x2)
#define SDIO_MULTIMEDIA_CARD ((uint32_t)0x3)
#define SDIO_SECURE_DIGITAL_IO_CARD ((uint32_t)0x4)
#define SDIO_HIGH_SPEED_MULTIMEDIA_CARD ((uint32_t)0x5)
#define SDIO_SECURE_DIGITAL_IO_COMBO_CARD ((uint32_t)0x6)
#define SDIO_HIGH_CAPACITY_MMC_CARD ((uint32_t)0x7)
/* Exported macro ------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */
SD_Error SD_Init(void);
SD_Error SD_PowerON(void);
SD_Error SD_PowerOFF(void);
SD_Error SD_InitializeCards(void);
SD_Error SD_GetCardInfo(SD_CardInfo *cardinfo);
SD_Error SD_EnableWideBusOperation(uint32_t WideMode);
SD_Error SD_SetDeviceMode(uint32_t Mode);
SD_Error SD_SelectDeselect(uint32_t addr);
SD_Error SD_ReadBlock(uint32_t addr, uint32_t *readbuff, uint16_t BlockSize);
SD_Error SD_ReadMultiBlocks(uint32_t addr, uint32_t *readbuff, uint16_t BlockSize, uint32_t NumberOfBlocks);
SD_Error SD_WriteBlock(uint32_t addr, uint32_t *writebuff, uint16_t BlockSize);
SD_Error SD_WriteMultiBlocks(uint32_t addr, uint32_t *writebuff, uint16_t BlockSize, uint32_t NumberOfBlocks);
SDTransferState SD_GetTransferState(void);
SD_Error SD_StopTransfer(void);
SD_Error SD_Erase(uint32_t startaddr, uint32_t endaddr);
SD_Error SD_SendStatus(uint32_t *pcardstatus);
SD_Error SD_SendSDStatus(uint32_t *psdstatus);
SD_Error SD_ProcessIRQSrc(void);
#endif /* __SDCARD_H */
/**
* @}
*/
/**
* @}
*/
/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -