📄 usb.h
字号:
#ifndef _USB_H_
#define _USB_H_
#include "Hw_define.h"
#include "UsbSpec.h" //oli 2007-5-25 11:45
#include "UdcReg.h" //oli 2007-5-25 11:45
#include "hw_interrupt.h" //oli 2007-5-25 11:45
#define END_POINTER_NUM 4
//#define END_POINTER_NUM 16
#define WAIT_TX_BUF_AV(reg) do{ }while( ReadReg32( reg ) & TxFULL )
#define WAIT_DMA_DONE(reg) do{ }while( ReadReg32( reg ) & ENP_DMASTATUS )
#define virt_to_phy(va) (TransVAtoPA(va)) //oli 2007-9-26 15:22
#define ASSERT_SOFT_POR() do { WriteReg32( UDC_DEVCTL, (ReadReg32(UDC_DEVCTL) | SOFT_POR)); } while(0)
#define DEASSERT_SOFT_POR() do { WriteReg32( UDC_DEVCTL, (ReadReg32(UDC_DEVCTL) & ~SOFT_POR)); } while(0)
#define SET_PHY_16_BIT() do { WriteReg32( UDC_DEVCTL, (ReadReg32(UDC_DEVCTL) | DEV_PHY16BIT)); } while(0)
#ifdef SUPPORT_REMOTE_WAKEUP
#define SOFT_CONNECT() do { WriteReg32( UDC_DEVCTL, (ReadReg32(UDC_DEVCTL)|DEV_SELF_PWR|DEV_SOFT_CN|CSR_DONE|DEV_RMTWKP) ); } while(0)
#else
#define SOFT_CONNECT() do { WriteReg32( UDC_DEVCTL, (ReadReg32(UDC_DEVCTL)|DEV_SELF_PWR|DEV_SOFT_CN|CSR_DONE) );} while(0)
#endif // SUPPORT_REMOTE_WAKEUP
#ifdef SUPPORT_REMOTE_WAKEUP
#define SOFT_DISCONNECT() do { WriteReg32( UDC_DEVCTL, (ReadReg32(UDC_DEVCTL)|DEV_RMTWKP|DEV_SELF_PWR) ); WriteReg32( UDC_DEVCTL, (ReadReg32(UDC_DEVCTL)&(~DEV_SOFT_CN)) );} while(0)
#else
#define SOFT_DISCONNECT() do { WriteReg32( UDC_DEVCTL, (ReadReg32(UDC_DEVCTL)|DEV_SELF_PWR) ); WriteReg32( UDC_DEVCTL, (ReadReg32(UDC_DEVCTL)&(~DEV_SOFT_CN)) );} while(0)
#endif // SUPPORT_REMOTE_WAKEUP
#define USB_SOFT_DISCONNECT() do { WriteReg32( UDC_DEVCTL, (ReadReg32(UDC_DEVCTL)|(~DEV_SOFT_CN)) ); } while(0)
#define IS_FULL_SPEED() ( (ReadReg32( UDC_DEVINFO ) & ENUM_SPEED_MASK)==ENUM_FULL_SPEED )
#define IS_HIGH_SPEED() ( (ReadReg32( UDC_DEVINFO ) & ENUM_SPEED_MASK)==ENUM_HIGH_SPEED )
#define ASSIGNED_ADDRESS() ( ReadReg32( UDC_DEVINFO ) & DEV_ADDR )
#define VBUS_OK() (( ReadReg32( UDC_DEVINFO ) & VBUS_STS ) ? TRUE : FALSE)
#define INTFLG (ReadReg32( UDC_INTFLG ))
#define RX0_STATUS (ReadReg32( UDC_RX0STAT ))
#define TX0_STATUS (ReadReg32( UDC_TX0STAT ))
#define RX1_STATUS (ReadReg32( UDC_RX1STAT ))
#define TX2_STATUS (ReadReg32( UDC_TX2STAT ))
#define TX0_STALL (WriteReg32( UDC_TX0CON, ReadReg32( UDC_TX0CON ) | TxSTALL ))
#define YES 1
#define NO 0
#define SETUP_STAGE 11
#define DATA_STAGE 22
#define STATUS_STAGE 33
#define BK_BUF_SIZE 0x10000
#define BULK_BLOCK_SIZE 0x200
#define MAX_BK_NUM (BK_BUF_SIZE/BULK_BLOCK_SIZE)
#define INTR_BUF_SIZE 0x10000
#define INTR_BLOCK_SIZE 0x20
#define MAX_INTR_NUM (INTR_BUF_SIZE/INTR_BLOCK_SIZE)
#define CTRL_BUF_SIZE 0x10000
#define CTRL_BLOCK_SIZE 0x200
#define MAX_CTRL_NUM (CTRL_BUF_SIZE/CTRL_BLOCK_SIZE)
#define VENDOR_TEST_OUT0 (0x1)
#define VENDOR_TEST_IN0 (0x2)
#define VENDOR_TEST_OUT1 (0x3)
#define VENDOR_TEST_IN2 (0x4)
#ifdef __cplusplus
extern "C"
{
#endif
#ifdef BOARD
#define USB_INSERT() VBUS_OK()
#else
#define USB_INSERT() 0
#endif
extern void serial_printf(const char *fmt, ...);
void UDCInit(void);
void UDC_ISR(void);
UINT32 UsbWriteCtlEP(UINT16 len, UINT8 * buf);
void UsbWriteDataEP(UINT16 len, UINT8 * buf);
UINT32 UsbReadCtlEP(UINT16 len, UINT8 * buf);
void UsbReadyToReadDataEP(UINT8 * buf);
void UsbEnableRX(void);
#ifdef BOARD
__inline void UsbClrCtlEP()
{
WriteReg32(UDC_TX0CON, ReadReg32(UDC_TX0CON) | TxCLR);
WriteReg32(UDC_TX0CON, ReadReg32(UDC_TX0CON) & ~TxCLR);
WriteReg32(UDC_RX0CON, ReadReg32(UDC_RX0CON) | RxCLR);
WriteReg32(UDC_RX0CON, ReadReg32(UDC_RX0CON) & ~RxCLR);
}
__inline void UsbDisableEP0()
{
WriteReg32(UDC_TX0CON, ReadReg32(UDC_TX0CON) | TxNAK);
WriteReg32(UDC_RX0CON, ReadReg32(UDC_RX0CON) | RxNAK);
}
#endif
void GetStatus(void);
void ClearFeature(void);
void SetFeature(void);
void set_address(void);
UINT32 UsbGetDescriptor(void);
void GetConfiguration(void);
void SetConfiguration(void);
void GetInterface(void);
void SetInterface(void);
//u32_t fn_get_device_id();
UINT8 UsbGetLUN(void);
UINT32 UsbGetCapacity(UINT8 LUN);
void UsbReadInit(UINT8 LUN, UINT32 LBA, UINT16 Len);
void UsbWriteInit(UINT8 LUN, UINT32 LBA, UINT16 Len);
void* UsbReadSec(void);
void UsbWriteSec(void *buf);
void Usb_PowerOnInit(void);
void UsbReset(void);
void UsbSetupReq(void);
void UsbIn0(void);
void UsbOut0(void);
void UsbIntrReq(UINT32 ch); // Interrupt IN request hanlder
void UsbSuspend(void);
void UsbResume(void);
void UsbVbusIntr(void);
void UsbCtlSetZeroData(INT32 len);
#endif // _USB_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -