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

📄 pe_usb.h

📁 FIC8120方案的 StartCell_Driver
💻 H
字号:
#ifndef __USB_H
	#define __USB_H
	
#include "flib.h" 	
#include "symbol.h"
#include "FOTG200_peripheral.h"

  #define HighBandWidth_None         0x00
  #define HighBandWidth_2            0x01
  #define HighBandWidth_3            0x02
  
 

	////// Define USB transfer test defines//////
	#define Bulk_AP					0
	#define Interrupt_AP			1   //Important:this setting only for cross-connection, NOT for PC test-bench
	#define IsochronousIN_AP		2		
	#define IsochronousOUT_AP		3	
	#define OTG_AP_Satus			Bulk_AP

	////// Define Bulk transfer FIFO test ///////
	#define Bulk_FIFO_SingleDir		0	
	#define Bulk_FIFO_BiDir			1
			
	#define Bulk_Satus				Bulk_FIFO_BiDir
	
//================ 1. Define for control Vandor test==================================================
	extern INT8U u8CxOUTVandorDataCount;
	extern INT8U u8CxINVandorDataCount;


//================ 2.Define for Bulk =====================================================================================
	#define ShowMassMsg		0
	#define MAX_BUFFER_SIZE	0x10000//0x2000//bruce;;04182005;;0x10000
	#define DBUS_RD				1
	#define DBUS_WR				2
	#define APB_RD				3
	#define APB_WR				4
	#define DBUS2APB			5
	#define APB2DBUS			6

	#define CBW_SIGNATE		0x43425355
	#define CSW_SIGNATE			0x53425355
	#define CSW_STATUS_CMD_PASS			0x00
	#define CSW_STATUS_CMD_FAIL			0x01
	#define CSW_STATUS_PHASE_ERROR		0x02

	typedef enum 
	{
		IDLE,
		STATE_CBW,
		STATE_CB_DATA_IN,
		STATE_CB_DATA_OUT,
		STATE_CSW
	} MassStorageState;

	typedef struct CommandBlockWrapper
	{
		INT32U u32Signature;
		INT32U u32Tag;
		INT32U u32DataTransferLength;
		INT8U u8Flags;
		INT8U u8LUN;
		INT8U u8CBLength;
		INT8U u8CB[16];
	} CBW;

	typedef struct CommandStatusWrapper
	{
		INT32U u32Signature;
		INT32U u32Tag;
		INT32U u32DataResidue;
		INT8U u8Status;
	} CSW;

	extern CBW tOTGCBW;
	extern CSW tOTGCSW;
	extern MassStorageState eUsbOTGMassStorageState;
	
	extern INT8U   *u8VirtOTGMemory;//[MAX_BUFFER_SIZE];
	extern INT32U*   u32VirtOTGMemory;
	extern INT32U   u32VirtOTGMemoryIndex;
	
	extern INT32U	 u32OTGFIFOUseDMA;
	extern INT32U	 u32UseDMAOTGChannel;
	extern INT8U   bOTGDMARunning;
	
	extern void vUsb_Bulk_Out(INT16U u16FIFOByteCount);
	extern void vUsb_Bulk_In(void);
	extern void vOTG_APInit(void);
	extern void vOTGCheckDMA(void);

//================ 3.Define for Interrupt =====================================================================================
	#define IntTransSizeFix 		0
	
	extern INT8U *u8InterruptOTGArray;
	extern INT8U u8OTGInterruptCount;
	extern INT32U u32OTGInterrupt_TX_COUNT ;
	
	extern INT8U u8OTGInterruptOutCount ;
	extern INT32U u32OTGInterrupt_RX_COUNT ;

	extern void vOTG_Interrupt_In(void);
	extern void vOTG_Interrupt_Initial(void);
	extern void vOTG_Interrupt_Out(void);

//================   Define for Isochronous =========================
	#define ISO_Wrap 	254//254
	
	extern INT32U *u32OTGISOArray;
	extern INT32U u32ISOOTGInTransferCount;
	extern INT32U u32ISOOTGOutTransferCount;
	extern INT32U u32ISOOTGInTest[4096];
	extern INT32U *u32ISOOTGOutArray;
	extern INT8U u8ISOOTGOutCount ;

	extern void vOTG_ISO_Initial(void);
	extern void vOTG_ISO_In(void);
	extern void vOTG_ISO_Out(void);
	extern void vAHB_DMA_WaitIntStatus(UINT32 Channel);
	
//============== 4.Define for main.c =========================================	                         
	extern INT8U u8LineOTGCount;


//============== 5.Define for usb.c  =========================================
	typedef enum 
	{
		CMD_VOID,						// No command
		CMD_GET_DESCRIPTOR,			// Get_Descriptor command
		CMD_SET_DESCRIPTOR,			// Set_Descriptor command
		CMD_CxOUT_Vendor,				//Cx OUT Vandor command test
		CMD_CxIN_Vendor				//Cx IN Vandor command test
	} CommandType;

	typedef enum 
	{
		ACT_IDLE,
		ACT_DONE,
		ACT_STALL
	} Action;

	#define DCacheEnable				0
	// Table 9-5. Descriptor Types
	#define DT_DEVICE							1
	#define DT_CONFIGURATION					2
	#define DT_STRING							3
	#define DT_INTERFACE						4
	#define DT_ENDPOINT							5
	#define DT_DEVICE_QUALIFIER					6
	#define DT_OTHER_SPEED_CONFIGURATION		7
	#define DT_INTERFACE_POWER					8
	#define DT_OTG				                9 //For OTG
	
	
    //For OTG
    #define OTG_SRP_SUPPORT			    0x01
    #define OTG_HNP_SUPPORT			    0x02	
	#define FS_OTG_SUPPORT          (OTG_SRP_SUPPORT | OTG_HNP_SUPPORT)   
	
	
	#define TEST_J								0x02
	#define TEST_K								0x04
	#define TEST_SE0_NAK						0x08
	#define TEST_PKY								0x10



	//*******************************************************
	// Structure
	typedef struct Setup_Packet
	{
		INT8U Direction;		/*Data transfer direction: IN, OUT*/
		INT8U Type;			/*Request Type: Standard, Class, Vendor*/
		INT8U Object;		/*Recipient: Device, Interface, Endpoint,other*/
		INT16U Request;		/*Refer to Table 9-3*/
		INT16U Value;
		INT16U Index;
		INT16U Length;
	} SetupPacket;

	extern BOOLEAN bOTGBufferEmpty;
	extern INT8U u8OTGMessageLevel;
	
	extern INT32U OTG_interrupt_level1;
	extern INT32U OTG_interrupt_level1_Save;
	extern INT32U OTG_interrupt_level1_Mask;
	
	extern INT8U u8OTGConfigValue;
	extern INT8U u8OTGInterfaceValue;
	extern INT8U u8OTGInterfaceAlternateSetting;
	extern BOOLEAN bOTGHighSpeed;
	
	extern void vOTGInit(void);
	extern void vOTGHandler(void);
	
	extern void vOTGFIFO_EPxCfg_HS(void);
	extern void vOTGFIFO_EPxCfg_FS(void);

	extern void vFOTG200_Dev_Init(void);
	extern void vOTG_ep0setup(void);
	extern BOOLEAN bOTGStandardCommand(void);
	extern BOOLEAN bGet_OTGstatus(void);
	extern BOOLEAN bClear_OTGfeature(void);
	extern BOOLEAN bSet_OTGfeature(void);
	extern BOOLEAN bSet_OTGaddress(void);
	extern BOOLEAN bGet_OTGdescriptor(void);
	extern void vOTGEP0TxData(void);
	extern BOOLEAN bSet_OTGdescriptor(void);
	extern void vOTGEP0RxData(void);
	extern void vGet_OTGconfiguration(void);
	extern BOOLEAN bSet_OTGconfiguration(void);
	extern void vOTGClrEPx(void);
	extern void vOTGClrEPxFIFOxReg(void);
	extern BOOLEAN bGet_OTGinterface(void);
	extern BOOLEAN bSet_OTGinterface(void);
	extern BOOLEAN bSynch_OTGframe(void);
	extern void vOTG_ep0tx(void);
	extern void vOTGEP0TxData(void);
	extern void vOTG_ep0rx(void);
	extern void vOTGEP0RxData(void);
	extern void vOTG_ep0end(void);
	extern void vOTG_ep0fail(void);
	extern void vOTG_ep0abort(void);
	
	extern void vOTG_rst(void);
	extern void vOTG_suspend(void);
	extern void vOTG_resm(void);
	extern void vOTG_sof(void);	
	
	extern void vOTG_ISO_SeqErr(void);	      
	extern void vOTG_ISO_SeqAbort(void);   
	extern void vOTG_TX0Byte(void);
	extern void vOTG_RX0Byte(void);
	
	extern void vOTGDxFWr(INT8U FIFONum, INT8U * pu8Buffer, INT16U u16Num);
	extern void vOTGDxFRd(INT8U FIFONum, INT8U * pu8Buffer, INT16U u16Num);

	extern void vOTGCxFWr( INT8U *pu8Buffer, INT16U u16Num);
	extern void vOTGCxFRd( INT8U *pu8Buffer, INT16U u16Num);
	extern void flib_Debug_LED_Init(void);

extern void flib_Debug_LED_On_All(void);
extern void flib_Debug_LED_Off_All(void);
#endif /* __USB_H  */

⌨️ 快捷键说明

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