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

📄 mmc_base.h

📁 有关于USB的一些主机端驱动
💻 H
📖 第 1 页 / 共 2 页
字号:
#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 + -