Skip to content

File bsp_sd_diskio.h

File List > external-docs > libDaisy > src > util > bsp_sd_diskio.h

Go to the documentation of this file

Source Code

#pragma once
#ifndef DSY_BSP_SD_DISKIO_H
#define DSY_BSP_SD_DISKIO_H 
#include <stdint.h>

/* 
This struct is identical to the struct provided as "HAL_SD_CardInfoTypeDef"
I'm using this to allow users to link to the fatfs middleware without having to then link in the entire HAL to their project.
*/
typedef struct
{
    uint32_t CardType; 
    uint32_t CardVersion; 
    uint32_t Class; 
    uint32_t RelCardAdd; 
    uint32_t BlockNbr; 
    uint32_t BlockSize; 
    uint32_t LogBlockNbr; 
    uint32_t LogBlockSize; 
    uint32_t CardSpeed; 
} DSY_SD_CardInfoTypeDef;

#define BSP_SD_CardInfo DSY_SD_CardInfoTypeDef   
#define MSD_OK ((uint8_t)0x00)                   
#define MSD_ERROR ((uint8_t)0x01)                
#define MSD_ERROR_SD_NOT_PRESENT ((uint8_t)0x02) 
#define SD_TRANSFER_OK ((uint8_t)0x00)           
#define SD_TRANSFER_BUSY ((uint8_t)0x01)         
#define SD_PRESENT ((uint8_t)0x01)               
#define SD_NOT_PRESENT ((uint8_t)0x00)           
#define SD_DATATIMEOUT ((uint32_t)100000000)     
// Functions internal for diskIO
uint8_t BSP_SD_Init(void);     
uint8_t BSP_SD_ITConfig(void); 
uint8_t BSP_SD_ReadBlocks(uint32_t *pData,
                          uint32_t  ReadAddr,
                          uint32_t  NumOfBlocks,
                          uint32_t  Timeout);
uint8_t BSP_SD_WriteBlocks(uint32_t *pData,
                           uint32_t  WriteAddr,
                           uint32_t  NumOfBlocks,
                           uint32_t  Timeout);

uint8_t
BSP_SD_ReadBlocks_DMA(uint32_t *pData, uint32_t ReadAddr, uint32_t NumOfBlocks);

uint8_t BSP_SD_WriteBlocks_DMA(uint32_t *pData,
                               uint32_t  WriteAddr,
                               uint32_t  NumOfBlocks);

uint8_t BSP_SD_Erase(uint32_t StartAddr, uint32_t EndAddr);

uint8_t BSP_SD_GetCardState(void);

void BSP_SD_GetCardInfo(BSP_SD_CardInfo *CardInfo);

uint8_t BSP_SD_IsDetected(void);

void BSP_SD_AbortCallback(void);
void BSP_SD_WriteCpltCallback(void);
void BSP_SD_ReadCpltCallback(void);

#endif