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

📄 ata_init_mmcsd.c

📁 dm270 source code
💻 C
字号:
/*
    DM270 ARM Evaluation Software

    (c)Texas Instruments 2003
*/

#include <fileio/ata_init.h>
#include <ata_media.h>

#include <system/clkc270.h>

#include <mmcsd_evm270.h>
#include <mmcsd_protocol.h>

#pragma	DATA_SECTION( mmcsdDrive, "ata_buf" )
AtaState *mmcsdDrive;

#pragma	DATA_SECTION( state, "ata_buf" )
static AtaState state;

#pragma	DATA_SECTION( MMCSDState, "ata_buf" )
static AtaMEDIAState MMCSDState;

MMCSD_ConfigData mmcsdConfig = {
	MMCSD_LITTLE_ENDIAN,  // write Endian
	MMCSD_LITTLE_ENDIAN,  // read Endian
	MMCSD_DAT3_DISABLE,
	FALSE,                // SpiModeEnable
	FALSE,                // csEnable
	FALSE,                // spiCrcEnable
	MMCSD_DATA_BUS_1,     // data bus width    
	0xFF,                 // response timeout
	0                     // data read timeout
};
static Uint32 relCardAddr = 2;
	static MMCSD_cardStatusReg cardStatus;

int MMCSD_deviceInit() {
	Uint32 fnClkRtDiv, mmcClkRtDiv;
	STATUS stat;
	
		
	stat = MMCSD_initCard( &relCardAddr, &cardStatus, &mmcsdConfig );
	if(stat!=E_PASS) 
		return ( stat );

	fnClkRtDiv =2;
	mmcClkRtDiv=1;

	MMCSD_setClock( TRUE, fnClkRtDiv-1, mmcClkRtDiv-1);
	    
	if( cardStatus.multiMediaCard == FALSE){
	    // SD card, set bus width to 4 lines
		stat = SD_setBusWidth( relCardAddr, 2, MMCSD_OP_TIMEOUT );
		if(stat!=E_PASS) 
			return ( stat );
	}
	return E_PASS;
}

STATUS MMCSD_ataInit() {
	AtaError error = ATA_ERROR_NONE;

	mmcsdDrive=NULL;

	/*SUMMCSDIT - Adding init code for ATA-FS*/
	MMCSDState.BufR      = BufR;
	MMCSDState.BufFat    = BufFAT;
	MMCSDState.FAT_CACHE_ENABLE = 1;
	MMCSDState.BufDataR  = BufDATAR;
	MMCSDState.BufDataWR = BufDATAWR;
	MMCSDState.RBufSize  = 32;
	MMCSDState.WRBufSize = 32;
	MMCSDState.detect    = MMCSD_deviceInit;
	MMCSDState.init      = MMCSD_deviceInit;
	MMCSDState.readNSector = MMCSD_readNSector;
	MMCSDState.writeNSector = MMCSD_writeNSector;
	
	/*SUSMIT - Adding init code for ATA-FS*/
	state.AtaInitAtaMediaState=MEDIA_initState;
	state.pAtaMediaState=&MMCSDState;

	state.AtaInitAtaMediaState(&state);

	state._AtaWriteBuffer = _AtaWriteBuffer;
	state.get_date = get_date;
	state.get_time = get_time;
	state.get_mod_date = get_mod_date;
	state.get_mod_time = get_mod_time;
	
    error = ATA_systemInit(&state);
	if(error)
		return E_DEVICE;

	ATA_enableMFW(&state);
		
	MEDIA_FAT_cacheInit(state.pAtaMediaState);

	mmcsdDrive=&state;
	return E_PASS;
}

⌨️ 快捷键说明

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