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

📄 usb_fifoepxcfg.c

📁 FIC8120方案的 StartCell_Driver
💻 C
字号:
#include <stdarg.h>
//#include "Ftc32t.h"
//#include "DataType.h"
//#include "Define.h"
//#include "main.h"

#include "usb.h"
#include "usb_config.h"

//#include "usb_m.h"
//#include "usb_bulk.h"
//#include "usb_intr.h"
#include "FUSB220.h"



//-----------------------------------------------------------------------


/////////////////////////////////////////////////////
//		vUsbFIFO_EPxCfg_HS(void)
//		Description:
//			1. Configure the FIFO and EPx map
//		input: none
//		output: none
/////////////////////////////////////////////////////
void vUsbFIFO_EPxCfg_HS(void)
{
	int i;
	ptCONFIG_LIST ptConfig;
	ptINTERFACE_LIST ptInterface;
	ptENDPOINT_LIST ptENDPOINT;
	UINT8 bDIRECTION;
	
	
	switch (u8UsbConfigValue)
	{
		// Configuration 0X01
		case 0X01:
			ptConfig=&(HS_DEVICE.tCONFIG[1]);
			switch (u8UsbInterfaceValue)
			{
				// Interface 0
				case 0:
					ptInterface=&(ptConfig->tINTERFACE[0]);
					switch (u8UsbInterfaceAlternateSetting)
					{
						// AlternateSetting 0
						case 0:
							
							switch(ptInterface->bNumEndpoints){
							
								case 0x04:
									ptENDPOINT=&(ptInterface->tENPOINT[4]);
									//EP4
									mUsbEPMap(EP4, ptENDPOINT->bMAP);
									mUsbFIFOMap(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_MAP);
									mUsbFIFOConfig(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_CONFIG);
									
									for(i = ptENDPOINT->bFIFO_START + 1 ;
										i < ptENDPOINT->bFIFO_START + ptENDPOINT->bFIFO_NO ;
									    i ++)
									{
										mUsbFIFOConfig(i, (ptENDPOINT->bFIFO_CONFIG & (~BIT7)) );
									}
									bDIRECTION=(1-((ptENDPOINT->bEndpointAddress)>>7));
									mUsbEPMxPtSzHigh(EP4, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff) );
									mUsbEPMxPtSzLow(EP4, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff) );
									mUsbEPinHighBandSet(EP4 , bDIRECTION , ptENDPOINT->wMaxPacketSize);

								case 0x03:
									ptENDPOINT=&(ptInterface->tENPOINT[3]);
									//EP3
									mUsbEPMap(EP3, ptENDPOINT->bMAP);
									mUsbFIFOMap(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_MAP);
									mUsbFIFOConfig(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_CONFIG);
									
									for(i = ptENDPOINT->bFIFO_START + 1 ;
										i < ptENDPOINT->bFIFO_START + ptENDPOINT->bFIFO_NO ;
									    i ++)
									{
										mUsbFIFOConfig(i, (ptENDPOINT->bFIFO_CONFIG & (~BIT7)) );
									}
									bDIRECTION=(1-((ptENDPOINT->bEndpointAddress)>>7));
									mUsbEPMxPtSzHigh(EP3, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff) );
									mUsbEPMxPtSzLow(EP3, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff) );
									mUsbEPinHighBandSet(EP3 , bDIRECTION , ptENDPOINT->wMaxPacketSize);
								
								case 0x02:
									ptENDPOINT=&(ptInterface->tENPOINT[2]);
									//EP2
									mUsbEPMap(EP2, ptENDPOINT->bMAP);
									mUsbFIFOMap(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_MAP);
									mUsbFIFOConfig(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_CONFIG);
									
									for(i = ptENDPOINT->bFIFO_START + 1 ;
										i < ptENDPOINT->bFIFO_START + ptENDPOINT->bFIFO_NO ;
									    i ++)
									{
										mUsbFIFOConfig(i, (ptENDPOINT->bFIFO_CONFIG & (~BIT7)) );
									}
									bDIRECTION=(1-((ptENDPOINT->bEndpointAddress)>>7));
									mUsbEPMxPtSzHigh(EP2, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff) );
									mUsbEPMxPtSzLow(EP2, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff) );
									mUsbEPinHighBandSet(EP2 , bDIRECTION , ptENDPOINT->wMaxPacketSize);
								case 0x01:
									ptENDPOINT=&(ptInterface->tENPOINT[1]);
									//EP1
									mUsbEPMap(EP1, ptENDPOINT->bMAP);
									mUsbFIFOMap(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_MAP);
									mUsbFIFOConfig(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_CONFIG);
									
									for(i = ptENDPOINT->bFIFO_START + 1 ;
										i < ptENDPOINT->bFIFO_START + ptENDPOINT->bFIFO_NO ;
									    i ++)
									{
										mUsbFIFOConfig(i, (ptENDPOINT->bFIFO_CONFIG & (~BIT7)) );
									}
									bDIRECTION=(1-((ptENDPOINT->bEndpointAddress)>>7));
									mUsbEPMxPtSzHigh(EP1, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff) );
									mUsbEPMxPtSzLow(EP1, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff) );
									mUsbEPinHighBandSet(EP1 , bDIRECTION , ptENDPOINT->wMaxPacketSize);
									break;
							}		
							break;
						default:
							break;
					}
					break;
				default:
					break;
			}
			break;
		default:
			break;
	}
}

void vUsbFIFO_EPxCfg_FS(void)
{
	int i;
	ptCONFIG_LIST ptConfig;
	ptINTERFACE_LIST ptInterface;
	ptENDPOINT_LIST ptENDPOINT;
	UINT8 bDIRECTION;
	
	switch (u8UsbConfigValue)
	{
		// Configuration 0X01
		case 0X01:
			ptConfig=&(HS_DEVICE.tCONFIG[1]);
			switch (u8UsbInterfaceValue)
			{
				// Interface 0
				case 0:
					ptInterface=&(ptConfig->tINTERFACE[0]);
					switch (u8UsbInterfaceAlternateSetting)
					{
						// AlternateSetting 0
						case 0:
							switch(ptInterface->bNumEndpoints){
							
								case 0x04:
									ptENDPOINT=&(ptInterface->tENPOINT[4]);
									//EP4
									mUsbEPMap(EP4, ptENDPOINT->bMAP);
									mUsbFIFOMap(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_MAP);
									mUsbFIFOConfig(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_CONFIG);
									
									for(i = ptENDPOINT->bFIFO_START + 1 ;
										i < ptENDPOINT->bFIFO_START + ptENDPOINT->bFIFO_NO ;
									    i ++)
									{
										mUsbFIFOConfig(i, (ptENDPOINT->bFIFO_CONFIG & (~BIT7)) );
									}
									
									bDIRECTION=(1-((ptENDPOINT->bEndpointAddress)>>7));
									mUsbEPMxPtSzHigh(EP4, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff));
									mUsbEPMxPtSzLow(EP4, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff));
									mUsbEPinHighBandSet(EP4 , bDIRECTION, ptENDPOINT->wMaxPacketSize);
								case 0x03:
									ptENDPOINT=&(ptInterface->tENPOINT[3]);
									//EP3
									mUsbEPMap(EP3, ptENDPOINT->bMAP);
									mUsbFIFOMap(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_MAP);
									mUsbFIFOConfig(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_CONFIG);
									
									for(i = ptENDPOINT->bFIFO_START + 1 ;
										i < ptENDPOINT->bFIFO_START + ptENDPOINT->bFIFO_NO ;
									    i ++)
									{
										mUsbFIFOConfig(i, (ptENDPOINT->bFIFO_CONFIG & (~BIT7)) );
									}
									
									bDIRECTION=(1-((ptENDPOINT->bEndpointAddress)>>7));
									mUsbEPMxPtSzHigh(EP3, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff));
									mUsbEPMxPtSzLow(EP3, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff));
									mUsbEPinHighBandSet(EP3 , bDIRECTION, ptENDPOINT->wMaxPacketSize);
								case 0x02:
									ptENDPOINT=&(ptInterface->tENPOINT[2]);
									//EP2
									mUsbEPMap(EP2, ptENDPOINT->bMAP);
									mUsbFIFOMap(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_MAP);
									mUsbFIFOConfig(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_CONFIG);
									
									for(i = ptENDPOINT->bFIFO_START + 1 ;
										i < ptENDPOINT->bFIFO_START + ptENDPOINT->bFIFO_NO ;
									    i ++)
									{
										mUsbFIFOConfig(i, (ptENDPOINT->bFIFO_CONFIG & (~BIT7)) );
									}
									
									bDIRECTION=(1-((ptENDPOINT->bEndpointAddress)>>7));
									mUsbEPMxPtSzHigh(EP2, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff));
									mUsbEPMxPtSzLow(EP2, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff));
									mUsbEPinHighBandSet(EP2 , bDIRECTION, ptENDPOINT->wMaxPacketSize);
								case 0x01:
									ptENDPOINT=&(ptInterface->tENPOINT[1]);
									//EP1
									mUsbEPMap(EP1, ptENDPOINT->bMAP);
									mUsbFIFOMap(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_MAP);
									mUsbFIFOConfig(ptENDPOINT->bFIFO_START, ptENDPOINT->bFIFO_CONFIG);
									
									for(i = ptENDPOINT->bFIFO_START + 1 ;
										i < ptENDPOINT->bFIFO_START + ptENDPOINT->bFIFO_NO ;
									    i ++)
									{
										mUsbFIFOConfig(i, (ptENDPOINT->bFIFO_CONFIG & (~BIT7)) );
									}
									
									bDIRECTION=(1-((ptENDPOINT->bEndpointAddress)>>7));
									mUsbEPMxPtSzHigh(EP1, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff));
									mUsbEPMxPtSzLow(EP1, bDIRECTION, (ptENDPOINT->wMaxPacketSize & 0x7ff));
									mUsbEPinHighBandSet(EP1 , bDIRECTION, ptENDPOINT->wMaxPacketSize);
									break;
							}		
							break;
						default:
							break;
					}
					break;
				default:
					break;
			}
			break;
		default:
			break;
	}
}

⌨️ 快捷键说明

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