📄 mmc_base.h
字号:
#ifndef _MMC_BASE_H_
#define _MMC_BASE_H_
#ifndef Uint32
#define Uint32 unsigned int
#endif
#ifndef Uint16
#define Uint16 unsigned short
#endif
#ifndef Uint8
#define Uint8 unsigned char
#endif
//#define MMC_USE_DMA
// address of OMAP MMC registers
#define MMC_REG_CMD 0xFFFB7800 // MMC command
#define MMC_REG_ARGL 0xFFFB7804 // MMC argument low
#define MMC_REG_ARGH 0xFFFB7808 // MMC argument high
#define MMC_REG_CON 0xFFFB780C // MMC system configuration
#define MMC_REG_STAT 0xFFFB7810 // MMC status
#define MMC_REG_IE 0xFFFB7814 // MMC system interrupt enable
#define MMC_REG_CTO 0xFFFB7818 // MMC command time-out
#define MMC_REG_DTO 0xFFFB781C // MMC data time-out
#define MMC_REG_DATA 0xFFFB7820 // MMC TX/RX FIFO data
#define MMC_REG_BLEN 0xFFFB7824 // MMC block length
#define MMC_REG_NBLK 0xFFFB7828 // MMC number of blocks
#define MMC_REG_BUF 0xFFFB782C // MMC buffer configuration
#define MMC_REG_SPI 0xFFFB7830 // MMC serial port interface
#define MMC_REG_SDIO 0xFFFB7834 // MMC SDIO mode configurtion
#define MMC_REG_SYST 0xFFFB7838 // MMC system test
#define MMC_REG_REV 0xFFFB783C // MMC module version
#define MMC_REG_RSP0 0xFFFB7840 // MMC command response 0
#define MMC_REG_RSP1 0xFFFB7844 // MMC command response 1
#define MMC_REG_RSP2 0xFFFB7848 // MMC command response 2
#define MMC_REG_RSP3 0xFFFB784C // MMC command response 3
#define MMC_REG_RSP4 0xFFFB7850 // MMC command response 4
#define MMC_REG_RSP5 0xFFFB7854 // MMC command response 5
#define MMC_REG_RSP6 0xFFFB7858 // MMC command response 6
#define MMC_REG_RSP7 0xFFFB785C // MMC command response 7
#define MMC_RSET_H(reg,val) (*(volatile Uint16 *)(reg))=val
#define MMC_RGET_H(reg) (*(volatile Uint16 *)(reg))
/* error codes */
#define MMC_ERR_MAJOR (0x00000000)
#define MMC_ERR_ALLOC (0x00000000)
#define MMC_ERR_INVALID_HANDLE (0x00000001)
/* Default MMCARG1 register value */
/* MMCARG1 field values */
/*used to stuff argument registers when not used in a command*/
#define MMC_STUFF_BITS (0x0000)
/* Default MMCBLEN register value */
// 512 BYTES IS FIXED BLOCK SIZE FOR SPI MODE unless we mdify the blkpartial bit in CSD
#define MMC_BLEN_512 (0X01FF)
/* Default MMCBUF register value */
#define MMC_MMCBUF_RXDMA_EN (0x8000)
#define MMC_MMCBUF_AE_LEV2 (0x0000) // 0W
#define MMC_MMCBUF_TXDMA_EN (0x0080)
#define MMC_MMCBUF_AF_LEV2 (0x0000) //af level =0 Should not be used cause of hw bug
#define MMC_MMCBUF_AF_LEV4 (0x0100)
/* Default MMCCMD register value */
#define MMCCMD_RESET (0X0000u)
/* MMCCMD field values */
#define MMC_RSPNONE (0x0000)
#define MMC_RSP1 (0x0100)
#define MMC_RSP2 (0x0200)
#define MMC_RSP3 (0x0300)
#define MMC_RSP4 (0x0400)
#define MMC_RSP5 (0x0500)
#define MMC_RSP6 (0x0600)
#define MMC_RSPRESV (0x0700)
#define MMC_OD_EN (0x0040)
#define MMC_INIT (0x0080)
#define MMC_BSY (0x0800)
#define MMC_BC (0x0000)
#define MMC_BCR (0x1000)
#define MMC_AC (0x2000)
#define MMC_ADTC (0x3000)
#define MMC_SHR (0x4000)// set it if adtc or bc
#define MMC_RD (0x8000)// set only in adtc data read
// MMC command code
#define MMC_CMD0 (0x0000)
#define MMC_CMD1 (0x0001)
#define MMC_CMD2 (0x0002)
#define MMC_CMD3 (0x0003)
#define MMC_CMD4 (0x0004)
#define MMC_CMD5 (0x0005)
#define MMC_CMD6 (0x0006)
#define MMC_CMD7 (0x0007)
#define MMC_CMD8 (0x0008)
#define MMC_CMD9 (0x0009)
#define MMC_CMD10 (0x000A)
#define MMC_CMD11 (0x000B)
#define MMC_CMD12 (0x000C)
#define MMC_CMD13 (0x000D)
#define MMC_CMD14 (0x000E)
#define MMC_CMD15 (0x000F)
#define MMC_CMD16 (0x0010)
#define MMC_CMD17 (0x0011)
#define MMC_CMD18 (0x0012)
#define MMC_CMD19 (0x0013)
#define MMC_CMD20 (0x0014)
#define MMC_CMD21 (0x0015)
#define MMC_CMD22 (0x0016)
#define MMC_CMD23 (0x0017)
#define MMC_CMD24 (0x0018)
#define MMC_CMD25 (0x0019)
#define MMC_CMD26 (0x001A)
#define MMC_CMD27 (0x001B)
#define MMC_CMD28 (0x001C)
#define MMC_CMD29 (0x001D)
#define MMC_CMD30 (0x001E)
#define MMC_CMD31 (0x001F)
#define MMC_CMD32 (0x0020)
#define MMC_CMD33 (0x0021)
#define MMC_CMD34 (0x0022)
#define MMC_CMD35 (0x0023)
#define MMC_CMD36 (0x0024)
#define MMC_CMD37 (0x0025)
#define MMC_CMD38 (0x0026)
#define MMC_CMD39 (0x0027)
#define MMC_CMD40 (0x0028)
#define MMC_CMD41 (0x0029)
#define MMC_CMD42 (0x002A)
#define MMC_CMD43 (0x002B)
#define MMC_CMD44 (0x002C)
#define MMC_CMD45 (0x002D)
#define MMC_CMD46 (0x002E)
#define MMC_CMD47 (0x002F)
#define MMC_CMD48 (0x0030)
#define MMC_CMD49 (0x0031)
#define MMC_CMD50 (0x0032)
#define MMC_CMD51 (0x0033)
#define MMC_CMD52 (0x0034)
#define MMC_CMD53 (0x0035)
#define MMC_CMD54 (0x0036)
#define MMC_CMD55 (0x0037)
#define MMC_CMD56 (0x0038)
#define MMC_CMD57 (0x0039)
#define MMC_CMD58 (0x003A)
#define MMC_CMD59 (0x003B)
#define MMC_CMD60 (0x003C)
#define MMC_CMD61 (0x003D)
#define MMC_CMD62 (0x003E)
#define MMC_CMD63 (0x003F)
#define MMC_CMD64 (0x0040)
#define MMC_GO_IDLE_STATE (MMC_CMD0 |MMC_RSPNONE|MMC_BC )
#define MMC_SEND_OP_COND (MMC_CMD1 | MMC_OD_EN|MMC_RSP3 |MMC_BCR)
#define MMC_ALL_SEND_CID (MMC_CMD2 | MMC_OD_EN|MMC_RSP2 |MMC_BCR)
#define MMC_SET_RELATIVE_ADDR (MMC_CMD3 | MMC_OD_EN|MMC_RSP1 |MMC_AC)
#define MMC_SET_DSR (MMC_CMD4 | MMC_RSPNONE |MMC_BC )
#define MMC_SELECT_CARD (MMC_CMD7 | MMC_RSP1 | MMC_BSY | MMC_AC)
#define MMC_SEND_CSD (MMC_CMD9 | MMC_RSP2 |MMC_AC)
#define MMC_SEND_CID (MMC_CMD10 | MMC_RSP2 |MMC_AC)
#define MMC_SEND_CID_SPI (MMC_CMD10 | MMC_RSP1 |MMC_AC)
#define MMC_READ_DAT_UNTIL_STOP (MMC_CMD11 | MMC_RSP1 |MMC_ADTC | MMC_SHR|MMC_RD)
#define MMC_STOP_TRANSMISSION (MMC_CMD12 | MMC_RSP1 |MMC_BSY | MMC_AC)
#define MMC_SEND_STATUS (MMC_CMD13 | MMC_RSP1 |MMC_AC)
#define MMC_GO_INACTIVE_STATE (MMC_CMD15 | MMC_RSPNONE |MMC_AC)
#define MMC_SET_BLOCKLEN (MMC_CMD16 | MMC_RSP1 |MMC_AC)
#define MMC_READ_SINGLE_BLOCK (MMC_CMD17 | MMC_RSP1 |MMC_ADTC |MMC_RD)
#define MMC_READ_MULTIPLE_BLOCK (MMC_CMD18 | MMC_RSP1 |MMC_ADTC |MMC_RD)
#define MMC_WRITE_DAT_UNTIL_STOP (MMC_CMD20 | MMC_RSP1 |MMC_BSY |MMC_SHR)
#define MMC_WRITE_SINGLE_BLOCK (MMC_CMD24 | MMC_RSP1 |MMC_ADTC )
#define MMC_WRITE_MULTIPLE_BLOCK (MMC_CMD25 | MMC_RSP1 |MMC_ADTC )
#define MMC_PROGRAM_CID (MMC_CMD26 | MMC_RSP1 |MMC_ADTC )
#define MMC_PROGRAM_CSD (MMC_CMD27 | MMC_RSP1 |MMC_ADTC )
#define MMC_SET_WRITE_PROT (MMC_CMD28 | MMC_RSP1 |MMC_BSY |MMC_AC)
#define MMC_CLR_WRITE_PROT (MMC_CMD29 | MMC_RSP1 |MMC_BSY |MMC_AC)
#define MMC_SEND_WRITE_PROT (MMC_CMD30 | MMC_RSP1 | MMC_ADTC|MMC_RD)
#define MMC_ERASE_GROUP_START (MMC_CMD35 | MMC_RSP1 |MMC_AC)
#define MMC_ERASE_GROUP_END (MMC_CMD36 | MMC_RSP1 |MMC_AC)
#define MMC_ERASE (MMC_CMD38 | MMC_RSP1 |MMC_BSY | MMC_AC)
#define MMC_FAST_IO (MMC_CMD39 | MMC_RSP4)
#define MMC_GO_IRQ_STATE (MMC_CMD40 | MMC_RSP5)
#define MMC_CRC_ON_OFF_SPI (MMC_CMD59 | MMC_RSP1 )
//SD ACMD Commands
#define SD_SET_BUS_WIDTH (MMC_CMD6| MMC_RSP1 | MMC_AC )
#define SD_STATUS (MMC_CMD13| MMC_RSP1 )
#define SD_SEND_NUM_WR_BLOCKS (MMC_CMD22| MMC_RSP1 |MMC_ADTC |MMC_RD )
#define SD_SEND_OP_COND (MMC_CMD1 | MMC_RSP3 |MMC_BCR)
#define SD_SET_WR_BLK_ERASE_COUNT (MMC_CMD23| MMC_RSP1| MMC_ADTC |MMC_WR )
#define SD_APP_OP_COND (MMC_CMD41|MMC_RSP3|MMC_BCR )
#define SD_SET_CLR_CARD_DETECT (MMC_CMD42|MMC_RSP1|MMC_AC)
#define SD_SEND_SCR (MMC_CMD51|MMC_RSP1|MMC_ADTC| MMC_RD)
//SD commands
#define SD_ALL_SEND_CID (MMC_CMD2 | MMC_RSP2 |MMC_BCR)
#define SD_SEND_RELATIVE_ADDR (MMC_CMD3 | MMC_RSP6 |MMC_BCR)
#define SD_APP_CMD (MMC_CMD55|MMC_AC|MMC_RSP1)
#define SD_LOCK_UNLOCK (MMC_CMD42|MMC_ADTC |MMC_RSP1 |MMC_WR)
#define SD_GEN_CMD_WR (MMC_CMD56|MMC_RSP1|MMC_ADTC|MMC_BSY |MMC_WR)
#define SD_GEN_CMD_RD (MMC_CMD56|MMC_RSP1|MMC_ADTC|MMC_BSY |MMC_RD)
#define SD_ERASE_WR_BLK_START (MMC_CMD32|MMC_RSP1|MMC_AC)
#define SD_ERASE_WR_BLK_END (MMC_CMD33|MMC_RSP1|MMC_AC)
//SD Security commands
#define SD_GET_MKB (MMC_CMD43|MMC_RSP1|MMC_ADTC |MMC_RD)
#define SD_GET_MID (MMC_CMD44|MMC_RSP1|MMC_ADTC |MMC_RD)
#define SD_SET_CER_RN1 (MMC_CMD45|MMC_RSP1|MMC_ADTC |MMC_WR)
#define SD_GET_CER_RN2 (MMC_CMD46|MMC_RSP1|MMC_ADTC |MMC_RD)
#define SD_SET_CER_RES2 (MMC_CMD45|MMC_RSP1|MMC_ADTC |MMC_WR)
#define SD_GET_CER_RES1 (MMC_CMD45|MMC_RSP1|MMC_ADTC |MMC_RD)
//SD Protected Areea Access Commands
#define SD_SECURE_READ_MULTI_BLOCK (MMC_CMD18|MMC_RSP1|MMC_ADTC |MMC_RD)
#define SD_SECURE_WRITE_MULTI_BLOCK (MMC_CMD25|MMC_RSP1|MMC_ADTC |MMC_WR)
#define SD_SECURE_WRITE_MKB (MMC_CMD26|MMC_RSP1|MMC_ADTC |MMC_WR)
#define SD_SECURE_ERASE (MMC_CMD38|MMC_RSP1|MMC_AC |MMC_BSY)
#define SD_CHANGE_SECURE_AREA (MMC_CMD49|MMC_RSP1|MMC_AC |MMC_BSY)
//SPI commands different from rest
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -