rt-thread/bsp/nxp/lpc/lpc176x/drivers/sd.h

49 lines
1.6 KiB
C

#ifndef __SD_H__
#define __SD_H__
#include <stdint.h>
/* SD/MMC Commands */
#define GO_IDLE_STATE (0x40 + 0) // CMD0
#define SEND_OP_COND (0x40 + 1)
#define CMD8 (0x40 + 8) // CMD8
#define SEND_CSD (0x40 + 9)
#define SEND_CID (0x40 + 10) // CMD10
#define STOP_TRAN (0x40 + 12) // CMD12
#define SET_BLOCKLEN (0x40 + 16) // CMD16
#define READ_BLOCK (0x40 + 17)
#define READ_MULT_BLOCK (0x40 + 18)
#define WRITE_BLOCK (0x40 + 24)
#define WRITE_MULT_BLOCK (0x40 + 25)
#define APP_CMD (0x40 + 55) // CMD55
#define READ_OCR (0x40 + 58) // CMD58
#define CRC_ON_OFF (0x40 + 59)
#define SD_SEND_OP_COND (0xC0 + 41) // ACMD41
#define SD_STATUS (0xC0 + 13) // ACMD13, SD_STATUS (SDC)
#define SET_WR_BLK_ERASE_COUNT (0xC0 + 23) // ACMD23 (SDC)
/* Card type flags (CardType) */
#define CT_NONE 0x00
#define CT_MMC 0x01
#define CT_SD1 0x02
#define CT_SD2 0x04
#define CT_SDC (CT_SD1|CT_SD2)
#define CT_BLOCK 0x08
/* MMC device configuration */
typedef struct tagSDCFG
{
uint32_t sernum; // serial number
uint32_t size; // size=sectorsize*sectorcnt
uint32_t sectorcnt; //
uint32_t sectorsize; // 512
uint32_t blocksize; // erase block size
uint8_t ocr[4]; // OCR
uint8_t cid[16]; // CID
uint8_t csd[16]; // CSD
} SDCFG;
void rt_hw_sdcard_init(void);
#endif