sd.h

来自「51环境下的FAT及FAT32文件系统源码」· C头文件 代码 · 共 88 行

H
88
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?