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

📄 sd.c

📁 该文件为S3C44B0硬件平台配置具体函数的初始化及其SD卡读写程序
💻 C
字号:
/*
;************************************************************************************************************
;*									  北京精仪达盛科技有限公司
;*                                     	    研    发    部
;*
;*                                 	    http://www.techshine.com
;*
;*--------------------------------------------- 文件信息 ----------------------------------------------------                                      
;*
;* 文件名称 : IIS.c	
;* 文件功能 : 该文件为S3C44B0硬件平台配置具体函数的初始化。
;* 补充说明 : 
;*-------------------------------------------- 最新版本信息 -------------------------------------------------
;* 修改作者 : ARM7开发小组
;* 修改日期 : 2004/04/25
;* 版本声明 : V1.0.1
;*-------------------------------------------- 历史版本信息 -------------------------------------------------
;* 文件作者 : ARM7开发小组
;* 创建日期 : 2004/04/20
;* 版本声明 : v1.0.0
;*-----------------------------------------------------------------------------------------------------------
;*-----------------------------------------------------------------------------------------------------------
;************************************************************************************************************
;*/
#include "..\..\startup44b0\inc\44b.h"
#include "..\..\startup44b0\inc\44blib.h"
#include "..\..\startup44b0\inc\def.h"
#include "..\inc\SD.h"
unsigned short buffer[9];
 unsigned short  card,card1 ;
 char s1=0;
/*
*************************************************************************************************************
- 函数名称 : void W86_Init(void)
- 函数说明 : 初始化W86
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void W86_Init(void)
{
	char i=0;
	for(i=0;i<18;i++)
	{
	buffer[i]=0;
	}
	card 			= rCON_REG;
	rCON_REG 		= 0xE7;
	Delay(100);
	rCON_REG 		= 0x15;			//上电,打开SD总线,设定时钟频率
	rGPIO_CON_REG 	= 0x1f1f;
	//rGPIO_DAT_REG	= 0xa1f;
	//Delay(1000);
	rGPIO_DAT_REG	= 0x21f;
	//rGPIO_DAT_REG	= 0xa1f;
	rIND_ADD_REG 	= 0x2;
	rIND_DAT_REG 	= 0x0200;
	rINT_ENA_REG 	= 0x8f;
	do
	{
		Delay(100);
		card 			= rSTA_REG;
		
		rCMD_PIPE_REG	= 0x7700;	//CMD55
		rCMD_PIPE_REG	= 0x0000;
		rCMD_PIPE_REG	= 0x0001;
		
		Delay(100);	
		card 			= rSTA_REG;
	
		rCMD_PIPE_REG	= 0x6900;	//ACMD41 With OCR
		rCMD_PIPE_REG	= 0xff80;
		rCMD_PIPE_REG	= 0x0001;
		
		Delay(100);	
		
		for(i=0;i<3;i++)
		{
			buffer[i] = rCMD_PIPE_REG;
		}
		Delay(1000);	
	}while((buffer[0]&0x0080)!=0x0080);
	
	
	rCMD_PIPE_REG= 0x4200;			//CMD2
	rCMD_PIPE_REG= 0x0000;
	rCMD_PIPE_REG= 0x0001;
	Delay(100);	
	card = rSTA_REG;
	
	for(i=0;i<9;i++)
	{
		buffer[i] = rCMD_PIPE_REG;
	}

}

/*
*************************************************************************************************************
- 函数名称:void TouchINT_Init(void)
- 函数功能:触摸屏中断初始化
- 输入参数:无
- 输出参数:无
*************************************************************************************************************
*/
void SDINT_Init(void)													             //触摸屏硬件接口使能
{
     if ((rINTPND & BIT_EINT4567))
    {
    	rI_ISPC = BIT_EINT4567;
    }
    rINTMSK  = ~(BIT_GLOBAL|BIT_EINT4567);
    pISR_EINT4567 = (int)SDCHECK_ISR;
    
}
/*
*************************************************************************************************************
- 函数名称 : void Init1341(void)
- 函数说明 : SD卡的插拔卡检测程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
void __irq SDCHECK_ISR(void)
{
   	int rr;
	    
    rr = rEXTINPND;
	card = rSTA_REG;
   	if(rr == 0x4)
   	{  
		card = rINT_STA_REG;
   	    if( (card & 0x100) == 0x100)
   	    { 
   	    	rIND_ADD_REG = 0x00;
			rIND_DAT_REG = 0x41;
   	    }

   
   }

  	rEXTINPND = 0x4; 
  	rI_ISPC = BIT_EINT4567;

  	card = rINT_STA_REG;
}

⌨️ 快捷键说明

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