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

📄 d12op.c

📁 linux下三星4510的BSP驱动程序!已经试验成功
💻 C
字号:
#include "../inc/def.h"
#include "../inc/D12Def.h"
#include "../inc/utils.h"
#include "../inc/board.h"
#include "../inc/config.h"
#include "../inc/s3c4510b.h"

U8 *D12CmdAddr,*D12DatAddr;
void D12SetEpStat(U8 Ep,U8 Stat)
{
	
	D12Cmd = Ep+0x40;	
	D12Dat = Stat;
	
}

void D12SetAddr(U8 Addr)
{
   
	D12Cmd = 0xd0;
	D12Dat = Addr;
	
}

void D12SetEp(U8 Val)
{
	
	D12Cmd = 0xd8;
	D12Dat = Val;
	
}

void D12SetDma(U8 Dma)
{
	
	D12Cmd = 0xfb;
	D12Dat = Dma;
	
}

void D12SetMode(U8 Val1, U8 Val2)
{
	
	D12Cmd = 0xf3;
	D12Dat = Val1;
	D12Dat = Val2;
}

void D12SendResume()
{
	
	D12Cmd = 0xf6;
}

void D12AckEp(U8 Ep)
{
	D12Cmd = Ep;
	
	D12Cmd = 0xf1;
	if(!Ep)
		D12Cmd = 0xf2;		
}

U32 D12RdChipId()
{
	U32 tmp;
	
	D12Cmd = 0xfd;
	
	//printf("/n one data=%d/n",tmp); 
	tmp = D12Dat;
    tmp = tmp<<8|D12Dat;	
	//D12DatAddr=(U8 *)D12Dat;	
	//tmp=tmp<<8|(*D12DatAddr);
	//printf("\n tmp= %i \n ",tmp);
	return tmp;	
}

U8 D12GetDma()
{
	D12Cmd = 0xfb;
	
	return D12Cmd;
	//return *D12CmdAddr;
}

U8 D12RdEp(U8 Ep,U8 buf[],U8 cnt)
{
	U8 tmp;
	
	D12SelEp(Ep);
	if(D12Cmd&1)
	//if((*D12CmdAddr)&1)
	{
	    
		D12Cmd = 0xf0;
		tmp = D12Cmd;
		tmp = D12Cmd;
		
		if(tmp<cnt)
			cnt = tmp;
		tmp = cnt;
		while(cnt)
		{
			*buf++ = D12Cmd;
			//*buf++=*D12CmdAddr;
			cnt--;
		}
		 //*D12CmdAddr=0xf2;
		D12Cmd = 0xf2;
		return tmp;	
	}
	else
		return 0;		
}

void D12WrEp(U8 Ep, U8 buf[], U8 cnt)
{
   
	while(1)
	{
		D12SelEp(Ep);
		if(!(D12Cmd&1))
		//if(!((*D12CmdAddr)&1))
			break;
	}
	
	D12Cmd = 0xf0;
	//*D12CmdAddr=0xf0;
	D12Dat = 0;
	//*D12DatAddr=0;
	//*D12DatAddr=cnt;
	D12Dat = cnt;
	while(cnt)
	{
		D12Dat = *buf++;
		//*D12DatAddr=*buf++;
		cnt--;
	}
	D12Cmd = 0xfa;
	//*D12DatAddr=0xfa;
}

U8 D12RdInt()
{
    //U8 *D12CmdAddr;
   // D12CmdAddr=(U8 *)D12Cmd;
   // *D12DatAddr=0xf4;
	D12Cmd = 0xf4;
	return D12Cmd;
	//return *D12DatAddr;
}
//add by changguofeng

 
void D12Main(void)
{
	U8 i;
  
	printf( "\nPDIUSBD12 TEST \n" ) ;
	//while(1)
	//{ UsbRdChipId();
	//}

	if(UsbRdChipId()==0x1210)
	{	
		puts("Pdiusbd12 Found, chip id = 0x1210\n");
		printf( "Please connect USB Line from PC to the Board \n" ) ;
		printf( "run LEDDEMO.EXE in the PC and Test \n" ) ;
		
		if( UsbInit() == 1 )		//STAUS_ERR
		{	
			printf( "USB Device Initial is Error! \n" ) ;
			return ;
		}
		
		while(getkey()!=ESC_KEY)
		{
			i = UsbQueryInt();
			//if(i)    printf("%x\n", i);
			UsbIntProc(i);	
		}
		
		D12SetMode(MyD12EpCfgOff, D12Pll24M);	//pull-up off
	}
	else
	{
		puts("No Pdiusbd12 Found\n");
	}
}

⌨️ 快捷键说明

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