123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #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
|