⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sd.h

📁 51环境下的FAT及FAT32文件系统源码
💻 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 + -