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

📄 mmcsd_protocol.h

📁 TI的DM6446的硬件平台搭建的相关例子
💻 H
字号:
/*
    DaVinci ARM Evaluation Software

    (c)Texas Instruments 2004
*/

/** \defgroup MMCSD MMC/SD module*/
/*@{*/

/** \file  mmcsd_protocol.h
     \brief Contains header's common to MMC and SD, which are protocol specific

*/

#ifndef _MMCSD_PROTOCOL_H_
#define _MMCSD_PROTOCOL_H_

#include <mmcsd_evm.h>
#include <cslr_mmcsd.h>


#define MMCSD_STUFF_BITS          0x00000000u
#define MMCSD_VDD_32_34           0x00300000u
#define MMCSD_VDD_32_33           0x00100000u


/**
    \brief Card Lock Structure as per MMC/SD Specifications
*/
typedef enum {
  MMCSD_SET_PASSWD=1,
  MMCSD_CLR_PASSWD=2,
  MMCSD_LOCK_UNLOCK=4,
  MMCSD_FORCED_ERASE=8
} MMCSD_CARD_LOCK_MODE;

/* Response Macros */
#define MMCSD_RSPNONE                   (0x0000u)
#define MMCSD_RSP1                      (0x0200u)
#define MMCSD_RSP2                      (0x0400u)
#define MMCSD_RSP3                      (0x0600u)
#define MMCSD_RSP4                       MMCSD_RSP1
#define MMCSD_RSP5                       MMCSD_RSP1
#define MMCSD_RSP6                       MMCSD_RSP1

/* Command Macros */
#define MMCSD_CMD0                      (0x0000u)
#define MMCSD_CMD1                      (0x0001u)
#define MMCSD_CMD2                      (0x0002u)
#define MMCSD_CMD3                      (0x0003u)
#define MMCSD_CMD4                      (0x0004u)
#define MMCSD_CMD5                      (0x0005u)
#define MMCSD_CMD6                      (0x0006u)
#define MMCSD_CMD7                      (0x0007u)
#define MMCSD_CMD8                      (0x0008u)
#define MMCSD_CMD9                      (0x0009u)
#define MMCSD_CMD10                     (0x000Au)
#define MMCSD_CMD11                     (0x000Bu)
#define MMCSD_CMD12                     (0x000Cu)
#define MMCSD_CMD13                     (0x000Du)
#define MMCSD_CMD14                     (0x000Eu)
#define MMCSD_CMD15                     (0x000Fu)
#define MMCSD_CMD16                     (0x0010u)
#define MMCSD_CMD17                     (0x0011u)
#define MMCSD_CMD18                     (0x0012u)
#define MMCSD_CMD19                     (0x0013u)
#define MMCSD_CMD20                     (0x0014u)
#define MMCSD_CMD21                     (0x0015u)
#define MMCSD_CMD22                     (0x0016u)
#define MMCSD_CMD23                     (0x0017u)
#define MMCSD_CMD24                     (0x0018u)
#define MMCSD_CMD25                     (0x0019u)
#define MMCSD_CMD26                     (0x001Au)
#define MMCSD_CMD27                     (0x001Bu)
#define MMCSD_CMD28                     (0x001Cu)
#define MMCSD_CMD29                     (0x001Du)
#define MMCSD_CMD30                     (0x001Eu)
#define MMCSD_CMD31                     (0x001Fu)
#define MMCSD_CMD32                     (0x0020u)
#define MMCSD_CMD33                     (0x0021u)
#define MMCSD_CMD34                     (0x0022u)
#define MMCSD_CMD35                     (0x0023u)
#define MMCSD_CMD36                     (0x0024u)
#define MMCSD_CMD37                     (0x0025u)
#define MMCSD_CMD38                     (0x0026u)
#define MMCSD_CMD39                     (0x0027u)
#define MMCSD_CMD40                     (0x0028u)
#define MMCSD_CMD41                     (0x0029u)
#define MMCSD_CMD42                     (0x002Au)
#define MMCSD_CMD43                     (0x002Bu)
#define MMCSD_CMD44                     (0x002Cu)
#define MMCSD_CMD45                     (0x002Du)
#define MMCSD_CMD46                     (0x002Eu)
#define MMCSD_CMD47                     (0x002Fu)
#define MMCSD_CMD48                     (0x0030u)
#define MMCSD_CMD49                     (0x0031u)
#define MMCSD_CMD50                     (0x0032u)
#define MMCSD_CMD51                     (0x0033u)
#define MMCSD_CMD52                     (0x0034u)
#define MMCSD_CMD53                     (0x0035u)
#define MMCSD_CMD54                     (0x0036u)
#define MMCSD_CMD55                     (0x0037u)
#define MMCSD_CMD56                     (0x0038u)
#define MMCSD_CMD57                     (0x0039u)
#define MMCSD_CMD58                     (0x003Au)
#define MMCSD_CMD59                     (0x003Bu)
#define MMCSD_CMD60                     (0x003Cu)
#define MMCSD_CMD61                     (0x003Du)
#define MMCSD_CMD62                     (0x003Eu)
#define MMCSD_CMD63                     (0x003Fu)
#define MMCSD_CMD64                     (0x0040u)

/* Commands and their responses */
/* MMC and SD */
#define MMCSD_GO_IDLE_STATE                   (MMCSD_CMD0 | MMCSD_RSPNONE)
#define MMCSD_ALL_SEND_CID                    (MMCSD_CMD2 | MMCSD_RSP2 )
#define MMCSD_SET_DSR                         (MMCSD_CMD4 | MMCSD_RSPNONE)
#define MMCSD_SELECT_CARD                     (MMCSD_CMD7 | MMCSD_RSP1)
#define MMCSD_DESELECT_CARD                   (MMCSD_CMD7 )
#define MMCSD_SEND_CSD                        (MMCSD_CMD9 | MMCSD_RSP2)
#define MMCSD_SEND_CID                        (MMCSD_CMD10| MMCSD_RSP2)
#define MMCSD_SEND_STATUS                     (MMCSD_CMD13 | MMCSD_RSP1)
#define MMCSD_GO_INACTIVE_STATE               (MMCSD_CMD15 | MMCSD_RSPNONE)
#define MMCSD_APP_CMD                         (MMCSD_CMD55 | MMCSD_RSP1 )
#define MMCSD_STOP_TRANSMISSION               (MMCSD_CMD12 | MMCSD_RSP1 | MMCSD_BSYEXP)
#define MMCSD_READ_MULTIPLE_BLOCK             (MMCSD_CMD18 | MMCSD_RSP1)
#define MMCSD_WRITE_MULTIPLE_BLOCK            (MMCSD_CMD25 | MMCSD_RSP1 ) /*| MMCSD_BSYEXP)*/

/* Common to SPI & MMC */
#define MMCSD_SET_BLOCKLEN                    (MMCSD_CMD16 | MMCSD_RSP1 )
#define MMCSD_PROGRAM_CSD                     (MMCSD_CMD27 | MMCSD_RSP1 | MMCSD_BSYEXP) /* MMC-bsy, SPI-bsy optional */
#define MMCSD_SET_WRITE_PROT                  (MMCSD_CMD28 | MMCSD_RSP1 | MMCSD_BSYEXP)
#define MMCSD_CLR_WRITE_PROT                  (MMCSD_CMD29 | MMCSD_RSP1 | MMCSD_BSYEXP)
#define MMCSD_SEND_WRITE_PROT                 (MMCSD_CMD30 | MMCSD_RSP1)
#define MMCSD_READ_SINGLE_BLOCK               (MMCSD_CMD17 | MMCSD_RSP1 )
#define MMCSD_WRITE_BLOCK                     (MMCSD_CMD24 | MMCSD_RSP1 )/*| MMC_BSYEXP)*/
#define MMCSD_READ_OCR                        (MMCSD_CMD58 | MMCSD_RSP3 )
#define MMCSD_CRC_ON_OFF                      (MMCSD_CMD59 | MMCSD_RSP1)

/* Command parameters */
#define MMCCMD_REG_INITCK             (0x4000u)
#define MMCCMD_REG_PPLEN              (0x0080u)

/* Function Prototypes */
STATUS MMCSD_goIdleState();
STATUS MMCSD_allSendCID( void );
STATUS MMCSD_setDSR( Uint32 dsr );
STATUS MMCSD_sendStatus( Uint32 rca, MMCSD_cardStatusReg *cardStatus );
STATUS MMCSD_selectCard( Uint32 rca );
STATUS MMCSD_deSelectCard( Uint16 newRCA, Uint16 oldRCA );
STATUS MMCSD_sendCSD( Uint32 rca, Uint16 *cardCSD );
STATUS MMCSD_sendCID( Uint32 rca, Uint16 *cardCID );
STATUS MMCSD_goInactiveState( Uint32 rca );
STATUS MMCSD_setBlkLen( Uint32 blkLength, Bool write );
STATUS MMCSD_programCSD( Uint32 rca, MMCSD_cardStatusReg *cardStatus, Bool writeProtect,Uint32 cardMemAddr );
STATUS MMCSD_setWriteProtect( Uint32 addr );
STATUS MMCSD_clearWriteProtect( Uint32 addr );
STATUS MMCSD_sendWriteProtect( Uint32 addr, Uint16 *writeProtBits,Uint32 cardMemAddr );
STATUS MMCSD_appCmd( Uint32 rca );
STATUS MMCSD_singleBlkRead( Uint32 cardMemAddr, Uint32 *dest, Uint32 blklength, Bool dmaEnable, Uint32 endian,MMCSD_FIFOTHR_LEVEL FifoLevel );
STATUS MMCSD_singleBlkWrite( Uint32 cardMemAddr, Uint32 *src, Uint32 blklength, Bool dmaEnable, Uint32 endian,MMCSD_FIFOTHR_LEVEL FifoLevel );
STATUS MMCSD_multipleBlkRead( Uint32 cardMemAddr, Uint32 *dest, Uint32 datalength, Bool dmaEnable, Uint32 endian );
STATUS MMCSD_multipleBlkWrite( Uint32 cardMemAddr, Uint32 *src, Uint32 datalength, Bool dmaEnable, Uint32 endian );
STATUS MMCSD_cardIdentification( MMCSD_ConfigData  *mmcsdConfig, Uint32  *relCardAddr, MMCSD_cardStatusReg *cardStatus, Uint32 opTimeout,MMCSD_CARD_TYPE cardType );
STATUS MMCSD_initCard( Uint32 *relCardAddr, MMCSD_cardStatusReg *cardStatus, MMCSD_ConfigData *mmcsdConfig,MMCSD_FIFOTHR_LEVEL fifoThrlevel,MMCSD_CARD_TYPE cardType);
int MMCSD_readNSector( int phySector, char *dataBuffer, int numBlks, int dmaEnable );
int MMCSD_writeNSector( int phySector, char *dataBuffer, int numBlks, int dmaEnable );
STATUS MMCSD_cardDetect(void);
STATUS MMCSD_setCRC(Bool enable);
STATUS MMCSD_readOCR(Uint32 *cardOCRRegister);




#endif /* _MMCSD_PROTOCOL_H_ */

/*@}*/
/* Rev.No.   Date/Time               ECN No.          Modifier      */
/* -------   ---------               -------          --------      */

/* 1         24 Jun 2004 14:41:00    1864             xjarlika      */
/*                                                                  */
/* Checking in MMCSD drv include and src files                      */
/********************************************************************/
/* Rev.No.   Date/Time               ECN No.          Modifier      */
/* -------   ---------               -------          --------      */

/* 2          Jul 15:22:20 8         2049             xjarlika      */
/*                                                                  */
/* FIFOCTL renamed as MMCFIFOCTL                                    */
/* Update due to Register Name Change                               */
/********************************************************************/
/* Rev.No.   Date/Time               ECN No.          Modifier      */
/* -------   ---------               -------          --------      */

/* 3         13 Aug 2004 18:21:54    2296             xjarlika      */
/*                                                                  */
/* Updating MMCSD include and src file after inital testing on Hibari*/
/* Updating MMCSD include and src file after inital testing on Hibari*/
/********************************************************************/
/* Rev.No.   Date/Time               ECN No.          Modifier      */
/* -------   ---------               -------          --------      */

/* 4         24 Aug 2004 14:45:31    2401             xjarlika      */
/*                                                                  */
/* Updating MMCSD drv include and src files after testing on Hibari */
/********************************************************************/
/* Rev.No.   Date/Time               ECN No.          Modifier      */
/* -------   ---------               -------          --------      */

/* 5         14 Jan 2005 11:26:23    5878             xjarlika      */
/*                                                                  */
/* Updating after testing on Davinci QT                             */
/********************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -