📄 at91c_mci_device.h
字号:
/**---------------------------------------------------------------------------*//** ATMEL Microcontroller Software Support - ROUSSET -*//**---------------------------------------------------------------------------*//** The software is delivered "AS IS" without warranty or condition of any*//** kind, either express, implied or statutory. This includes without*//** limitation any warranty or condition with respect to merchantability or*//** fitness for any particular purpose, or against the infringements of*//** intellectual property rights of others.*//**---------------------------------------------------------------------------*//** File Name : AT91C_MCI_Device.h*//** Object : Data Flash Atmel Description File*//** Translator :*//***//** 1.0 26/11/02 FB : Creation*//**---------------------------------------------------------------------------*/#ifndef AT91C_MCI_Device_h#define AT91C_MCI_Device_h#include "AT91RM9200.h"#include "lib_AT91RM9200.h"typedef unsigned int AT91S_MCIDeviceStatus;/**************************************************************************************/#define AT91C_CARD_REMOVED 0#define AT91C_MMC_CARD_INSERTED 1#define AT91C_SD_CARD_INSERTED 2#define AT91C_NO_ARGUMENT 0x0#define AT91C_FIRST_RCA 0xCAFE#define AT91C_MAX_MCI_CARDS 10#define AT91C_BUS_WIDTH_1BIT 0x00#define AT91C_BUS_WIDTH_4BITS 0x02/* Driver State */#define AT91C_MCI_IDLE 0x0#define AT91C_MCI_TIMEOUT_ERROR 0x1#define AT91C_MCI_RX_SINGLE_BLOCK 0x2#define AT91C_MCI_RX_MULTIPLE_BLOCK 0x3#define AT91C_MCI_RX_STREAM 0x4#define AT91C_MCI_TX_SINGLE_BLOCK 0x5#define AT91C_MCI_TX_MULTIPLE_BLOCK 0x6#define AT91C_MCI_TX_STREAM 0x7/* TimeOut */#define AT91C_TIMEOUT_CMDRDY 30/**************************************************************************************//* MMC & SDCard Structures *//**************************************************************************************//*-----------------------------------------------*//* SDCard Device Descriptor Structure Definition *//*-----------------------------------------------*/typedef struct _AT91S_MciDeviceDesc{ volatile unsigned char state; unsigned char SDCard_bus_width;} AT91S_MciDeviceDesc, *AT91PS_MciDeviceDesc;/*---------------------------------------------*//* MMC & SDCard Structure Device Features *//*---------------------------------------------*/typedef struct _AT91S_MciDeviceFeatures{ unsigned char Card_Inserted; /* (0=AT91C_CARD_REMOVED) (1=AT91C_MMC_CARD_INSERTED) (2=AT91C_SD_CARD_INSERTED)*/ unsigned int Relative_Card_Address; /* RCA*/ unsigned int Max_Read_DataBlock_Length; /* 2^(READ_BL_LEN) in CSD */ unsigned int Max_Write_DataBlock_Length; /* 2^(WRITE_BL_LEN) in CSD*/ unsigned char Read_Partial; /* READ_BL_PARTIAL*/ unsigned char Write_Partial; /* WRITE_BL_PARTIAL*/ unsigned char Erase_Block_Enable; /* ERASE_BLK_EN*/ unsigned char Read_Block_Misalignment; /* READ_BLK_MISALIGN*/ unsigned char Write_Block_Misalignment; /* WRITE_BLK_MISALIGN*/ unsigned char Sector_Size; /* SECTOR_SIZE*/ unsigned int Memory_Capacity; /* Size in bits of the device*/ } AT91S_MciDeviceFeatures, *AT91PS_MciDeviceFeatures ;/*---------------------------------------------*//* MCI Device Structure Definition *//*---------------------------------------------*/typedef struct _AT91S_MciDevice{ BLK_DEV blkDev; int drive; int blkOffset ; AT91PS_MciDeviceDesc pMCI_DeviceDesc; /* MCI device descriptor*/ AT91PS_MciDeviceFeatures pMCI_DeviceFeatures;/* Pointer on a MCI device features array */}AT91S_MciDevice, *AT91PS_MciDevice;/**************************************************************************************//* MCI_CMD Register Value *//**************************************************************************************/#define AT91C_POWER_ON_INIT (0 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_INIT | AT91C_MCI_OPDCMD)/**************************************************************************************//* Class 0 & 1 commands: Basic commands and Read Stream commands *//**************************************************************************************/#define AT91C_GO_IDLE_STATE_CMD (0 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE )#define AT91C_MMC_GO_IDLE_STATE_CMD (0 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_OPDCMD)#define AT91C_MMC_SEND_OP_COND_CMD (1 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_OPDCMD)#define AT91C_ALL_SEND_CID_CMD (2 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_136 )#define AT91C_MMC_ALL_SEND_CID_CMD (2 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_136 | AT91C_MCI_OPDCMD)#define AT91C_SET_RELATIVE_ADDR_CMD (3 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT )#define AT91C_MMC_SET_RELATIVE_ADDR_CMD (3 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT | AT91C_MCI_OPDCMD)#define AT91C_SET_DSR_CMD (4 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_NO | AT91C_MCI_MAXLAT ) /* no tested*/#define AT91C_SEL_DESEL_CARD_CMD (7 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT )#define AT91C_SEND_CSD_CMD (9 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_136 | AT91C_MCI_MAXLAT )#define AT91C_SEND_CID_CMD (10 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_136 | AT91C_MCI_MAXLAT )#define AT91C_MMC_READ_DAT_UNTIL_STOP_CMD (11 | AT91C_MCI_TRTYP_STREAM| AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRDIR | AT91C_MCI_TRCMD_START | AT91C_MCI_MAXLAT )#define AT91C_STOP_TRANSMISSION_CMD (12 | AT91C_MCI_TRCMD_STOP | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT )#define AT91C_STOP_TRANSMISSION_SYNC_CMD (12 | AT91C_MCI_TRCMD_STOP | AT91C_MCI_SPCMD_SYNC | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT )#define AT91C_SEND_STATUS_CMD (13 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT )#define AT91C_GO_INACTIVE_STATE_CMD (15 | AT91C_MCI_RSPTYP_NO )/**------------------------------------------------*//** Class 2 commands: Block oriented Read commands*//**------------------------------------------------*/#define AT91C_SET_BLOCKLEN_CMD (16 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT )#define AT91C_READ_SINGLE_BLOCK_CMD (17 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_START | AT91C_MCI_TRTYP_BLOCK | AT91C_MCI_TRDIR | AT91C_MCI_MAXLAT)#define AT91C_READ_MULTIPLE_BLOCK_CMD (18 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_START | AT91C_MCI_TRTYP_MULTIPLE | AT91C_MCI_TRDIR | AT91C_MCI_MAXLAT)/**--------------------------------------------*//** Class 3 commands: Sequential write commands*//**--------------------------------------------*/#define AT91C_MMC_WRITE_DAT_UNTIL_STOP_CMD (20 | AT91C_MCI_TRTYP_STREAM| AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 & ~(AT91C_MCI_TRDIR) | AT91C_MCI_TRCMD_START | AT91C_MCI_MAXLAT ) /* MMC*//**------------------------------------------------*//** Class 4 commands: Block oriented write commands*//**------------------------------------------------*/ #define AT91C_WRITE_BLOCK_CMD (24 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_START | (AT91C_MCI_TRTYP_BLOCK & ~(AT91C_MCI_TRDIR)) | AT91C_MCI_MAXLAT)#define AT91C_WRITE_MULTIPLE_BLOCK_CMD (25 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_START | (AT91C_MCI_TRTYP_MULTIPLE & ~(AT91C_MCI_TRDIR)) | AT91C_MCI_MAXLAT)#define AT91C_PROGRAM_CSD_CMD (27 | AT91C_MCI_RSPTYP_48 )/**----------------------------------------*//** Class 6 commands: Group Write protect*//**----------------------------------------*/#define AT91C_SET_WRITE_PROT_CMD (28 | AT91C_MCI_RSPTYP_48 )#define AT91C_CLR_WRITE_PROT_CMD (29 | AT91C_MCI_RSPTYP_48 )#define AT91C_SEND_WRITE_PROT_CMD (30 | AT91C_MCI_RSPTYP_48 )/**----------------------------------------*//** Class 5 commands: Erase commands*//**----------------------------------------*/#define AT91C_TAG_SECTOR_START_CMD (32 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT)#define AT91C_TAG_SECTOR_END_CMD (33 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT)#define AT91C_MMC_UNTAG_SECTOR_CMD (34 | AT91C_MCI_RSPTYP_48 )#define AT91C_MMC_TAG_ERASE_GROUP_START_CMD (35 | AT91C_MCI_RSPTYP_48 )#define AT91C_MMC_TAG_ERASE_GROUP_END_CMD (36 | AT91C_MCI_RSPTYP_48 )#define AT91C_MMC_UNTAG_ERASE_GROUP_CMD (37 | AT91C_MCI_RSPTYP_48 )#define AT91C_ERASE_CMD (38 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT )/**----------------------------------------*//** Class 7 commands: Lock commands*//**----------------------------------------*/#define AT91C_LOCK_UNLOCK (42 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) /* no tested*//**-----------------------------------------------*//* Class 8 commands: Application specific commands*//**-----------------------------------------------*/#define AT91C_APP_CMD (55 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT)#define AT91C_GEN_CMD (56 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT) /* no tested*/#define AT91C_SDCARD_SET_BUS_WIDTH_CMD (6 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT)#define AT91C_SDCARD_STATUS_CMD (13 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT)#define AT91C_SDCARD_SEND_NUM_WR_BLOCKS_CMD (22 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT)#define AT91C_SDCARD_SET_WR_BLK_ERASE_COUNT_CMD (23 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT)#define AT91C_SDCARD_APP_OP_COND_CMD (41 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO )#define AT91C_SDCARD_SET_CLR_CARD_DETECT_CMD (42 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT)#define AT91C_SDCARD_SEND_SCR_CMD (51 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_TRCMD_NO | AT91C_MCI_MAXLAT)#define AT91C_SDCARD_APP_ALL_CMD (AT91C_SDCARD_SET_BUS_WIDTH_CMD +\ AT91C_SDCARD_STATUS_CMD +\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -