mmcard.h File Reference

Header file for basic multimedia card driver. More...

Go to the source code of this file.

Data Structures

struct  MEMCARDSUPP
 Memory card support structure. More...
struct  MMCIFC
 Low level access information structure. More...
struct  MMC_CID
 Multimedia card identification register. More...
struct  MMC_CSD
 Multimedia card identification register. More...

Defines

#define NUTMC_SF_CD   0x01
#define NUTMC_SF_WP   0x02
#define NUTMC_IND_OFF   0
#define NUTMC_IND_READ   1
#define NUTMC_IND_WRITE   2
#define NUTMC_IND_ERROR   4
#define MMCMD_HOST   0x40
#define MMCMD_RESET_CRC   0x95
#define MMCMD_GO_IDLE_STATE   0
 Reset card to idle state.
#define MMCMD_SEND_OP_COND   1
 Activate card's initialization process.
#define MMCMD_ALL_SEND_CID   2
 Send operation condition register.
#define MMCMD_SEND_RELATIVE_ADDR   3
 Assign relative card address.
#define MMCMD_SELECT_CARD   7
 Assign relative card address.
#define MMCMD_SEND_EXTCSD   8
 Query card's extended CSD.
#define MMCMD_SEND_CSD   9
 Query card's CSD.
#define MMCMD_SEND_CID   10
 Query card's CID.
#define MMCMD_STOP_TRANSMISSION   12
 Stop multiple block transmission.
#define MMCMD_SEND_STATUS   13
 Query card's status register.
#define MMCMD_SET_BLOCKLEN   16
 Select block length for following read/write commands.
#define MMCMD_READ_SINGLE_BLOCK   17
 Initiate single block read.
#define MMCMD_READ_MULTIPLE_BLOCK   18
 Initiate continuous block read.
#define MMCMD_WRITE_BLOCK   24
 Initiate single block write.
#define MMCMD_WRITE_MULTIPLE_BLOCK   25
 Initiate continuous block write.
#define MMCMD_PROGRAM_CSD   27
 Initiate programming of programmable CSD bits.
#define MMCMD_SET_WRITE_PROTECT   28
 Enable card's optional write protection.
#define MMCMD_CLR_WRITE_PROTECT   29
 Disable card's write protection.
#define MMCMD_SEND_WRITE_PROTECT   30
 Query card's write protect status.
#define MMCMD_TAG_ERASE_GROUP_START   35
 Set address of the first erase group.
#define MMCMD_TAG_ERASE_GROUP_END   36
 Set address of the last erase group.
#define MMCMD_ERASE   38
 Erase previously selected sectors.
#define MMCMD_SEND_APP_OP_COND   41
 Activate SD card's initialization process.
#define MMCMD_LOCK_UNLOCK   42
 Set/clear password or lock/unlock the card.
#define MMCMD_SEND_APP_CMD   55
 Application command follows.
#define MMCMD_READ_OCR   58
 Query card's operating condition register.
#define MMCMD_CRC_ON_OFF   59
 Enable or disable CRC mode.
#define MMR1_IDLE_STATE   0x00
 Card is idle.
#define MMR1_NOT_IDLE   0x01
 Card is busy.
#define MMR1_ERASE_RESET   0x02
 Erase sequence was cleared before execution.
#define MMR1_ILLEGAL_COMMAND   0x04
 Illegal command code detected.
#define MMR1_COM_CRC_ERROR   0x08
 Bad command CRC detected.
#define MMR1_ERASE_SEQ_ERROR   0x10
 Bad erase sequence.
#define MMR1_ADDRESS_ERROR   0x20
 Misaligned address did not match block length.
#define MMR1_PARAMETER_ERROR   0x40
 Command parameter is out of range.
#define MMR2_CARD_LOCKED   0x01
 Card is locked.
#define MMR2_WP_ERASE_SKIP   0x02
 Erasing write protected sector or password error.
#define MMR2_ERROR   0x04
 General or unknown error occured.
#define MMR2_CC_ERROR   0x08
 Internal card controller error.
#define MMR2_ECC_FAILED   0x10
 Bad internal ECC.
#define MMR2_WP_VIOLATION   0x20
 Failed to write to protected block.
#define MMR2_ERASE_PARAMETER   0x40
 Invalid erase parameter.
#define MMR2_OUT_OF_RANGE   0x80
 Command parameter is out of range.
#define MMCSR_OUT_OF_RANGE   0x80000000
#define MMCSR_ADDRESS_ERROR   0x40000000
#define MMCSR_BLOCK_LEN_ERROR   0x20000000
#define MMCSR_ERASE_SEQ_ERROR   0x10000000
#define MMCSR_ERASE_PARAM   0x08000000
#define MMCSR_WP_VIOLATION   0x04000000
#define MMCSR_COM_CRC_ERROR   0x00800000
#define MMCSR_ILLEGAL_COMMAND   0x00400000
#define MMCSR_ERROR   0x00080000
#define MMCSR_CIDCSD_OVERWRITE   0x00010000
#define MMCSR_WP_ERASE_SKIP   0x00008000
#define MMCSR_CARD_ECC_DISABLED   0x00004000
#define MMCSR_ERASE_RESET   0x00002000
#define MMCSR_STATE_MASK   0x00001E00
#define MMCSR_READY_FOR_DATA   0x00000100
#define MMCSR_IS_IDLE   0x00000000
#define MMCSR_IS_READY   0x00000200
#define MMCSR_IS_IDENT   0x00000400
#define MMCSR_IS_STBY   0x00000600
#define MMCSR_IS_TRAN   0x00000800
#define MMCSR_IS_DATA   0x00000A00
#define MMCSR_IS_RCV   0x00000C00
#define MMCSR_IS_PRG   0x00000E00
#define MMCSR_IS_DIS   0x00001000
#define MMDR_ACCEPTED
#define MMDR_CRC_ERROR
#define MMDR_WRITE_ERROR
#define MMCERR_TIMEOUT   0x00000001
#define MMCOP_NBUSY   0x80000000
#define MMCARD_CIDR_SIZE   16
 Number of bytes in the CID register.
#define MMCARD_CSDR_SIZE   16
 Number of bytes in the CSD register.
#define MMCARD_OCR_SIZE   32
 Number of bytes in the operating condition register.

Functions

int MmCardDevInit (NUTDEVICE *dev)
 Initialize high level MMC driver.
int MmCardIOCtl (NUTDEVICE *dev, int req, void *conf)
 Perform MMC control functions.
int MmCardBlockRead (NUTFILE *nfp, void *buffer, int len)
 Read data blocks from a mounted partition.
int MmCardBlockWrite (NUTFILE *nfp, CONST void *buffer, int len)
 Write data blocks to a mounted partition.
int MmCardBlockWrite_P (NUTFILE *nfp, PGM_P buffer, int len)
 Write data blocks from program space to a mounted partition.
NUTFILE * MmCardMount (NUTDEVICE *dev, CONST char *name, int mode, int acc)
 Mount a partition.
int MmCardUnmount (NUTFILE *nfp)
 Unmount a previously mounted partition.
int SpiMmcInit (NUTDEVICE *dev)
 Initialize MMC driver.
int SpiMmcIOCtl (NUTDEVICE *dev, int req, void *conf)
 Perform MMC control functions.
int SpiMmcBlockRead (NUTFILE *nfp, void *buffer, int num)
 Read data blocks from a mounted partition.
int SpiMmcBlockWrite (NUTFILE *nfp, CONST void *buffer, int num)
 Write data blocks to a mounted partition.
int SpiMmcBlockWrite_P (NUTFILE *nfp, PGM_P buffer, int len)
 Write data blocks from program space to a mounted partition.
NUTFILE * SpiMmcMount (NUTDEVICE *dev, CONST char *name, int mode, int acc)
 Mount a partition.
int SpiMmcUnmount (NUTFILE *nfp)
 Unmount a previously mounted partition.

Voltage Ranges



#define MMCARD_165_195V   0x00000080
#define MMCARD_20_21V   0x00000100
#define MMCARD_21_22V   0x00000200
#define MMCARD_22_23V   0x00000400
#define MMCARD_23_24V   0x00000800
#define MMCARD_24_25V   0x00001000
#define MMCARD_25_26V   0x00002000
#define MMCARD_26_27V   0x00004000
#define MMCARD_27_28V   0x00008000
#define MMCARD_28_29V   0x00010000
#define MMCARD_29_30V   0x00020000
#define MMCARD_30_31V   0x00040000
#define MMCARD_31_32V   0x00080000
#define MMCARD_32_33V   0x00100000
#define MMCARD_33_34V   0x00200000
#define MMCARD_34_35V   0x00400000
#define MMCARD_35_36V   0x00800000

Control Codes



#define MMCARD_GETSTATUS   0x2001
 Retrieve card status.
#define MMCARD_GETOCR   0x2002
 Retrieve operation condition register.
#define MMCARD_GETCID   0x2003
 Retrieve card identification.
#define MMCARD_GETCSD   0x2004
 Retrieve card specific data.
#define MMCARD_GETEXTCSD   0x2005
 Retrieve extended card specific data.

Detailed Description

Header file for basic multimedia card driver.

 *
 * $Log$
 * Revision 1.5  2008/10/03 11:28:58  haraldkipp
 * Corrected and modified initialization of MultiMedia and SD Cards.
 *
 * Revision 1.4  2008/08/11 06:59:59  haraldkipp
 * BSD types replaced by stdint types (feature request #1282721).
 *
 * Revision 1.3  2006/10/08 16:48:09  haraldkipp
 * Documentation fixed
 *
 * Revision 1.2  2006/09/05 12:34:55  haraldkipp
 * Added commands for native MMC interface.
 *
 * Revision 1.1  2006/01/05 16:32:10  haraldkipp
 * First check-in.
 *
 *
 * 

Definition in file mmcard.h.


© 2000-2010 by contributors - visit http://www.ethernut.de/