📄 sd.h
字号:
// sd.h
// SD/MMC definitions for SPI protocol
// modified from holger.klabunde from AVR to C8051
//#########################################################################
#ifndef __SD_CARD_SPI_H
#define __SD_CARD_SPI_H
#define SPI_WRITE(a) { SPI_DATA=(a); while(!(SPI_STA0&SPI_SPTEF)); }
// data structures
typedef struct _CSD_BLOCK
{
unsigned char CSD_Struct:2;
unsigned char CSD_StructResv:6;
unsigned char CSD_RdAcsTime;
unsigned char CSD_RdAcsCycl;
unsigned char CSD_XferSpeed;
unsigned int CSD_CCC:12;
unsigned int CSD_RdBlkLen:4;
unsigned int CSD_RdBlkPartial:1;
unsigned int CSD_WrBlkMisAlign:1;
unsigned int CSD_RdBlkMisAlign:1;
unsigned int CSD_DSRImp:1;
unsigned int CSD_DevResv:2;
unsigned int CSD_DevSize:12;
unsigned int CSD_MaxRdCurVmin:3;
unsigned int CSD_MaxRdCurVmax:3;
unsigned int CSD_MaxWrCurVmin:3;
unsigned int CSD_MaxWrCurVmax:3;
unsigned int CSD_DevSizeMult:3;
unsigned int CSD_ErsSingBlk:1;
unsigned int CSD_ErsSectSize:7;
unsigned int CSD_WrProtGrpSize:7;
unsigned char CSD_WrFmtGrpEn:1;
unsigned char CSD_MMCResv:2;
unsigned char CSD_WrSpeedFactor:3;
unsigned char CSD_MaxWrLen:4;
unsigned char CSD_PartBlkWr:1;
unsigned char CSD_FileResv:5;
unsigned char CSD_FileFmtGrp:1;
unsigned char CSD_CopyFlag:1;
unsigned char CSD_PermWrProt:1;
unsigned char CSD_TempWrProt:1;
unsigned char CSD_FileFmt:2;
unsigned char CSD_Resv:2;
unsigned char CSD_CRC:7;
unsigned char CSD_EOB:1;
} CSD_BLOCK, *pCSD_BLOCK;
// SD/MMC commands
#define SD_RESET 0x40 + 0
#define SD_INIT 0x40 + 1
#define SD_READ_CSD 0x40 + 9
#define SD_READ_CID 0x40 + 10
//
#define SD_STOP_TRANSMISSION 0x40 + 12
#define SD_SEND_STATUS 0x40 + 13
//
#define SD_SET_BLOCKLEN 0x40 + 16
#define SD_READ_BLOCK 0x40 + 17
#define SD_READ_MULTI_BLOCK 0x40 + 18
//
#define SD_WRITE_BLOCK 0x40 + 24
#define SD_WRITE_MULTI_BLOCK 0x40 + 25
//prototypes
unsigned char GetDevInfo(void);
unsigned char SDCommand(unsigned char command, unsigned char *pAddr);
unsigned char SDReadSector(unsigned long sector);
unsigned char SDReadFat(unsigned long sector);
unsigned char SDReadRdir(unsigned long sector);
unsigned char SDWriteSector(unsigned long sector, unsigned char *pUsrBuf);
unsigned char SDIdentify(void);
unsigned char SDResp(unsigned char respLen);
unsigned char SDMp3Read(unsigned long sector);
unsigned char UartWaitCmd();
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -