📄 pe_usb.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 + -