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

📄 main.c

📁 2812学习板usb68013源代码,包括usb驱动
💻 C
字号:
/*********************************************************************
**	Module Name:		USB     				    				**
**	Author:				Cbq  			    						**
**	Version:			1.0			    							**
**	CreateDate:			2008-05-16		    						**
**	Description:		            			    				**
**	Remark:				Huozq		    							**
**	Revision History:	2008-11-10			    					**
**********************************************************************/

/*********************************************************************
**	实验目的:通过学习USB通讯实验,理解DSP如何实现通过USB与PC通信。   **                                                **
**	实验说明:硬件通过成熟的Cypress公司芯片68013实现。               **
**	实验结果:通过PC端软件可以测试收发数据。                         **
**********************************************************************/



#include "DSP28_Device.h"
#include "DSP28_Globalprototypes.h"

//RW:USB Add:0x4d00,0x4d02,0x4d04,0x4d06  对FIFO(EP2,EP4,EP6,EP8)进行读写操作地址
//R:FIFO_Sta:0x4300,  [2:0]=>FIFO_PROG,FIFO_FULL,FIFO_EMPTY 读FLAG状态的地址
  

unsigned int * EP2  = (unsigned int *) 0x4d00;
unsigned int * EP4  = (unsigned int *) 0x4d02;
unsigned int * EP6  = (unsigned int *) 0x4d04;
unsigned int * EP8  = (unsigned int *) 0x4d06;

unsigned int * FIFO_Sta2  = (unsigned int *) 0x4300;
unsigned int * FIFO_Sta4  = (unsigned int *) 0x4302;
unsigned int * FIFO_Sta6  = (unsigned int *) 0x4304;
unsigned int * FIFO_Sta8  = (unsigned int *) 0x4306;


unsigned int DataBuf[256],b[256];

void main(void)
{
   unsigned int k,i,j;
   
	/*初始化系统*/
	InitSysCtrl();

	/*关中断*/
	DINT;
	IER = 0x0000;
	IFR = 0x0000;
	/*初始化PIE*/
	InitPieCtrl();

	/*初始化PIE中断矢量表*/
	InitPieVectTable();	
	
	/*初始化外设*/
    InitPeripherals();

    /*初始化SCIA寄存器*/
    InitSci();

	InitGpio();
	InitXIntrupt();
	
	
	EALLOW;	
		
	EDIS;   
    	

	EINT;   // Enable Global interrupt INTM
	ERTM;	// Enable Global realtime interrupt DBGM
	
   	for(i=0;i<6000;i++)
     	for(k=0;k<2000;k++);

    for(i=0;i<16;i++)
	{
		while((SciaTx_Ready() != 1));
	
		SciaRegs.SCITXBUF =i;
		
    }

    i=0;

	for(;;)
	{
    	if((*FIFO_Sta2&0x0001)!=0)//接收端点不为空
    	{ 
    		//for(k=0;k<256;k++) 
     		b[i++]=*EP2;
	 		//i=k;
		}
	
		if(i==256)//接收满一个512字节的数据包
		{  
			if((b[0]>>8)==7)
			{ 
				for(k=0;k<128;k++) 
		   		{
			 		while((* FIFO_Sta6&0x0002)==0);	//FIFO为满则等待
					for(j=0;j<256;j++)
						*EP6 = (2*k<<8) + 2*k;
				}
	    	}
	    	
	    else if((b[0]>>8)==8)
		{ 
			for(k=0;k<128;k++) 
		   	{  
		    	while((* FIFO_Sta6&0x0002)==0);		//FIFO为满则等待
		    		for(j=0;j<256;j++)
						*EP6 = (2*j<<8) + 2*j;
			}
	    } 
	    
	    else if((b[0]>>8)==1)
		{
			for(k=0;k<256;k++)
		    {
		    	*EP6=b[k]+(1<<8);		//加1返回
		    }
	    }
	    
	    else if((b[0]>>8)==5)
		{
			for(k=0;k<256;k++)
		    {
		    	*EP6=b[k]+(5<<8);		//加5返回
		    }
	    }
	    
	    else 
		{
			for(k=0;k<256;k++)
		    {
		    	*EP6=b[k];  			//原值返回
		    }
	    }
	    
	    i=0;
    	}
 
	}

} 	




//===========================================================================
// No more.
//===========================================================================

⌨️ 快捷键说明

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