📄 usb.h
字号:
#define mdw_Ctl_IE_RWKP_Clr() (mdwUSB(0x208)&=~BIT28)
#define _Ctl_SOF_IE BIT21
#define _Ctl_CRWKP_IE BIT20
#define _Ctl_SRWKP_IE BIT19
#define _Ctl_CNNSTS_IE BIT18
#define _Ctl_SUSPEND_IE BIT17
#define _Ctl_URST_IE BIT16
#define _Ctl_CXINTR_IE BIT0
//Offset:0x20C(Device Control Command-1)
#define mw_CtlCmd120C() (mdwUSB(0x20C))
//Ofset:0x210(Device Control Command-2)
#define mw_CtlCmd1210() (mdwUSB(0x210))
//Offset:0x220(Device Control Endpoint Status Register)
#define mw_CtlEDStsBF1LenRd() (U16)((mdwUSB(0x220)>>20)&0x03FF) //In
#define mw_CtlEDStsBF0LenRd() (U16)((mdwUSB(0x220)>>8)&0x03FF) //Out
#define mb_CtlEDStsRd() (mbUSB(0x220))
#define mb_CtlEDStsSet(bValue) (mbUSB(0x220)=bValue)
#define mb_CtlEDStsCXSTSRd() (mbUSB(0x220) & BIT2)
#define mb_CtlEDStsCXSTSClr() (mbUSB(0x220) = BIT2)
#define mb_CtlEDStsCXDPKTRd() (mbUSB(0x220) & BIT1)
#define mb_CtlEDStsCXDPKTClr() (mbUSB(0x220) = BIT1)
#define mb_CtlEDStsCXSRd() (mbUSB(0x220) & BIT0)
#define mb_CtlEDStsCXSClr() (mbUSB(0x220) = BIT0)
//Offset:0x224(Device Control Endpoint Control Register)
#define mb_CtlEDCtlMXPKSZSet(bSize) (mbUSB(0x226) = (bSize&0x03))
#define mb_CtlEDCtlBF1Set() (mbUSB(0x225) |= BIT3)
#define mb_CtlEDCtlBF0Set() (mbUSB(0x225) |= BIT2)
#define mb_CtlEDCtlCXCMPLTSet(bValue) (mbUSB(0x225) = (bValue&0x03))
#define mb_CtlEDCtl_IE(bValue) (mbUSB(0x224) |= (bValue&0x07))
#define _CtlEDCtlMXPKSZ_8 0x00
#define _CtlEDCtlMXPKSZ_16 0x01
#define _CtlEDCtlMXPKSZ_32 0x02
#define _CtlEDCtlMXPKSZ_64 0x03
#define _CtlEDCtl_CXSTS_IE 0x04
#define _CtlEDCtl_CXDPKT_IE 0x02
#define _CtlEDCtl_CXS_IE 0x01
#define _CtlEDCtlCXCMPLT_NotComplete 0x00
#define _CtlEDCtlCXCMPLT_ACK 0x01
#define _CtlEDCtlCXCMPLT_STALL 0x02
//Offset:0x228(Device Control Endpoint Data Register)
#define mdw_CtlEDDataRd() (mdwUSB(0x228))
#define mdw_CtlEDDataSet(dwValue) (mdwUSB(0x228) = dwValue)
#define mb_CtlEDDataRd() (mbUSB(0x228))
#define mb_CtlEDDataSet(bValue) (mbUSB(0x228) = bValue)
//Offset:0x2n0(Device Endpoint-n Status Register)
#define mdw_EDnStsRd(EPn) (mdwUSB(0x230 + ((EPn-1)<<4)))
#define mb_EDnStsBF1RDYSet(EPn) (mbUSB(0x230 + 0x03 + ((EPn-1)<<4)) |= BIT7 )
#define mdw_EDnStsBF1RDYRd(EPn) (mdwUSB(0x230 + ((EPn-1)<<4))&BIT31 )
#define mw_EDnStsBF1LenRd(EPn) ((mdwUSB(0x230 + ((EPn-1)<<4)) >>20)& 0x03FF) //Bit20~Bit29
#define mw_EDnStsBF0LenRd(EPn) ((mdwUSB(0x230 + ((EPn-1)<<4)) >>8)& 0x03FF) //Bit8~Bit17
#define mb_EDnStsBF0RDYSet(EPn) (mbUSB(0x230 + 0x02 + ((EPn-1)<<4)) |= BIT3 )
#define mdw_EDnStsBF0RDYRd(EPn) (mdwUSB(0x230 + ((EPn-1)<<4)) & BIT19 )
#define mb_EDnStsBSelRd(EPn) (U8)(mdwUSB(0x230 + ((EPn-1)<<4))&BIT4)
#define mb_EDnStsTHOD(EPn,bValue) (mbUSB(0x230 + ((EPn-1)<<4)) = mbUSB(0x230 + ((EPn-1)<<4))|(bValue<<2))
#define mb_EDnStsBUDOVRClr(EPn) (mbUSB(0x230 + ((EPn-1)<<4)) |= BIT1 )
#define mb_EDnStsDPKTClr(EPn) (mbUSB(0x230 + ((EPn-1)<<4)) |= BIT0 )
#define mb_EDnStsDPKTRd(EPn) (U8)(mdwUSB(0x230 + ((EPn-1)<<4))&BIT1)
#define mb_EDnSts_IERd(EPn) (mbUSB(0x230 + ((EPn-1)<<4))&0x03)
#define _EDnStsBSel_Buffer0 0x00
#define _EDnStsBSel_Buffer1 0x01
#define _EDnStsTHOD_Disable 0x00
#define _EDnStsTHOD_1_2_MAXSize 0x01
#define _EDnStsTHOD_1_4_MAXSize 0x02
//Offset:0x2n4(Device Endpoint-n Control Register) =>Rd.ok
#define mdw_EDnCtlSet(EPn,bValue) (mdwUSB(0x234 +((EPn-1)<<4)) = bValue)
#define mdw_EDnCtlRd(EPn) (mdwUSB(0x234 +((EPn-1)<<4)))
#define mb_EDnCtlByte3(EPn,bValue) (mbUSB(0x236 +((EPn-1)<<4)) = bValue)
#define mb_EDnCtlByte3Rd(EPn) (mbUSB(0x236 +((EPn-1)<<4)))
#define mb_EDnCtlBF1CLRSet(EPn) (mbUSB(0x235 +((EPn-1)<<4)) |= BIT2)
#define mb_EDnCtlBF0CLRSet(EPn) (mbUSB(0x235 +((EPn-1)<<4)) |= BIT1)
#define mb_EDnCtlSTLSet(EPn) (mbUSB(0x235 +((EPn-1)<<4)) |= BIT0)
#define mb_EDnCtlSTLClr(EPn) (mbUSB(0x235 +((EPn-1)<<4)) &= ~BIT0)
#define mdw_EDnCtlSTLRd(EPn) (mdwUSB(0x234 +((EPn-1)<<4))&BIT8)
#define mb_EDnCtlByte1(EPn,bValue) (mbUSB(0x234 +((EPn-1)<<4)) = bValue)
#define mb_EDnCtl_DMA_ENABLE(EPn) (mbUSB(0x234 +((EPn-1)<<4)) = (U8)(mdwUSB(0x234 +((EPn-1)<<4))|BIT3) )
#define mb_EDnCtl_DMA_DISABLE(EPn) (mbUSB(0x234 +((EPn-1)<<4)) = (U8)(mdwUSB(0x234 +((EPn-1)<<4))&(~BIT3)) )
#define _EDnCtlEPTPY_BULK 0x01
#define _EDnCtlEPTPY_INT 0x02
#define _EDnCtlEPTPY_ISO 0x03
#define _EDnCtlDIR_OUT 0x00
#define _EDnCtlDIR_IN 0x01
#define _EDnCtlDBEN_ENABLE 0x08
#define _EDnCtlMXPKSZ_8 0x00
#define _EDnCtlMXPKSZ_16 0x01
#define _EDnCtlMXPKSZ_32 0x02
#define _EDnCtlMXPKSZ_64 0x03
#define _EDnCtlMXPKSZ_128 0x04
#define _EDnCtlMXPKSZ_256 0x05
#define _EDnCtlMXPKSZ_512 0x06
#define _EDnCtlMXPKSZ_1023 0x07
#define _EDnCtlByte1_DMA_ENABLE 0x08
#define _EDnCtlByte1_DMA_DISABLE 0x00
#define _EDnCtlByte1_THOD_EN 0x04
#define _EDnCtlByte1_BUDOVR_IE 0x02
#define DPKT_IE 0x01
//Offset:0x2n8(Device Endpoint-n Data Register)
#define mdw_EDnDataRd(EPn) (mdwUSB(0x238 +((EPn-1)<<4)))
#define mdw_EDnDataSet(EPn,dwValue) (mdwUSB(0x238 +((EPn-1)<<4)) = dwValue)
#define mb_EDnDataRd(EPn) (mbUSB(0x238 +((EPn-1)<<4)))
#define mb_EDnDataSet(EPn,bValue) (mbUSB(0x238 +((EPn-1)<<4)) = bValue)
#define mdwEDDataPortAddress(EPn) (0x96900238+((EPn-1)<<4))
//=================== 3.Extern Function Definition =====================================================================
//==
//==
//========================================================================================================
extern void flib__INT_Init(void);
extern void _usb_ep0_Init(void);
extern void flib__vUsb_ep0end(void);
extern void flib__vUsb_ep0setup(void);
extern BOOL flib__bGet_status(void);
extern BOOL flib__bClear_feature(void);
extern BOOL flib__bSet_feature(void);
extern BOOL flib__bSet_address(void);
extern BOOL flib__bGet_descriptor(void);
extern BOOL flib__bSet_descriptor(void);
extern void flib__vGet_configuration(void);
extern BOOL flib__bSet_configuration(void);
extern BOOL flib__bGet_interface(void);
extern BOOL flib__bSet_interface(void);
extern BOOL flib_bSynch_frame(void);
extern BOOL flib__bStandardCommand(void);
extern void flib__vUsbEP0TxData(void);
extern void flib__vUsbEP0RxData(void);
//=================== 4.Extern Variable Definition =====================================================================
//========================================================================================================
extern U8 u8UsbMessageLevel;
//=================== 5.Dtructure Definition =====================================================================
//========================================================================================================
//========== original-Bruce =========================================================================================
typedef enum {
CMD_VOID, // No command
CMD_GET_DESCRIPTOR, // Get_Descriptor command
CMD_SET_DESCRIPTOR, // Set_Descriptor command
CMD_GET_SD_CSD // Get SDCard tCSD command
} CommandType;
typedef enum {
ACT_IDLE,
ACT_DONE,
ACT_STALL
} Action;
typedef struct Setup_Packet
{
U8 Direction; /*Data transfer direction: IN, OUT*/
U8 Type; /*Request Type: Standard, Class, Vendor*/
U8 Object; /*Recipient: Device, Interface, Endpoint,other*/
U16 Request; /*Refer to Table 9-3*/
U16 Value;
U16 Index;
U16 Length;
} SetupPacket;
#define USB_MASS_STORAGE 0
typedef enum
{
USB_SERVICE_VENDOR_SPECIFIC = 0, // DM, DLOAD....
USB_SERVICE_CDC_ACM, // CDC of Abstract Control Model.
MAX_NUM_USB_SERVICE
} E_USB_SERVICE_TYPE;
typedef enum
{
USB_CLASS_MODEM = 0,
USB_CLASS_UFI,
MAX_NUM_USB_CLASS
} E_USB_CLASS_TYPE;
BOOL UsbDescInit(E_USB_CLASS_TYPE bDescType);
void UsbZeroPacketTx(void);
void UsbSinglePacketTx(U8 * buf, U8 len);
void UsbMultiPacketTx(U8 nEp, U8 * pRomData, unsigned short len);
extern void vUsbFIFO_EPxCfg_FS(void);
void dld_UsbDescInit(void);
void Wr_ep(U32 endp, U8 * buf, U32 length);
U16 Rd_ep(U32 endp, U8 * buf);
U16 Rd_ep0(U8 * buf);
U32 getFifoCnt(U32 endp);
void Rd_ep_fifo(U32 endp, U8 *buf, int length);
void Rd_ep_fifo_CS(U32 endp, U8 *buf, int length);
void dn_and_flash(void);
void UpgradeImage(void);
void dn_and_run(void);
void dn_only(void);
#endif /*__USB_H__*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -