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

📄 usbep1.c

📁 QT2410的BOOTLOADER 特点 1.支援NAND FLASH读写 2.TFTP firmware upgrade 3.USB firmware upgrade 4.Fdisk
💻 C
字号:
#include "sys.h"
#include "usb.h"
// ===================================================================
// All following commands will operate in case 
// - in_csr1 is valid.
// ===================================================================

#define SET_EP1_IN_PKT_READY()  rIN_CSR1_REG= ( in_csr1 &(~ EPI_WR_BITS)| EPI_IN_PKT_READY )	 
#define SET_EP1_SEND_STALL()	rIN_CSR1_REG= ( in_csr1 & (~EPI_WR_BITS)| EPI_SEND_STALL) )
#define CLR_EP1_SENT_STALL()	rIN_CSR1_REG= ( in_csr1 & (~EPI_WR_BITS)&(~EPI_SENT_STALL) )
#define FLUSH_EP1_FIFO() 		rIN_CSR1_REG= ( in_csr1 & (~EPI_WR_BITS)| EPI_FIFO_FLUSH) )


// ***************************
// *** VERY IMPORTANT NOTE ***
// ***************************
// Prepare the code for the packit size constraint!!!

// EP1 = IN end point. 

extern u_int UsbState;
extern u_int UsbInLength;
extern u_char *UsbTxAddr;

u_char ep1Buf[EP1_PKT_SIZE];
int transferIndex=0;


void PrepareEp1Fifo(void) 
{
    int i;
    u_char in_csr1;   
    
    rINDEX_REG=1;
    in_csr1=rIN_CSR1_REG;
    
	for(i=0;i<EP1_PKT_SIZE;i++)ep1Buf[i]=(u_char)(transferIndex+i);
//	WrPktEp1(ep1Buf,EP1_PKT_SIZE);
	WrPktEp1(UsbTxAddr, EP1_PKT_SIZE);
	UsbTxAddr   += EP1_PKT_SIZE;
   	UsbInLength -= ((UsbInLength>EP1_PKT_SIZE)?EP1_PKT_SIZE:UsbInLength);
   	if(!UsbInLength)
   		UsbState = 0;
    SET_EP1_IN_PKT_READY(); 
}


void Ep1Handler(void)
{
    u_char in_csr1;
    
    rINDEX_REG = 1;    
    in_csr1 = rIN_CSR1_REG;   

    //I think that EPI_SENT_STALL will not be set to 1.
    if(in_csr1 & EPI_SENT_STALL)
    {   
//		DbgOut("[STALL]");
	   	CLR_EP1_SENT_STALL();
   		return;
    }	

    //IN_PKT_READY is cleared
    
    //The data transfered was ep1Buf[] which was already configured  
    
	transferIndex++;		
			
	if(UsbState==0x01234567)	
		PrepareEp1Fifo();
    		    	
    
    	//IN_PKT_READY is set   
    	//This packit will be used for next IN packit.	

    return;
}   

⌨️ 快捷键说明

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