📄 usb.h
字号:
#ifndef __USB_H__
#define __USB_H__
#include "basetype.h"
extern volatile U8 *downPt;
extern volatile U16 checkSum;
extern volatile U32 USBdownloadAddress;
extern volatile U32 downloadFileSize;
extern volatile U32 totalDLCnt;
void USB_download(void);
//////////////////////////////////////////////////////////////////////////////
//
// File name: usb.h
// Description: 1.Define Data Type
// 2.Define for Bulk
// 3.Define Macro
///////////////////////////////////////////////////////////////////////////////
#define SINGLE_BLK 0
#define DOUBLE_BLK 1
// Endpoint transfer type
#define TF_TYPE_BULK 1
#define TF_TYPE_INTERRUPT 2
#define TF_TYPE_ISOCHRONOUS 3
// Endpoint or FIFO direction define
#define DIRECTION_IN_REG 1
#define DIRECTION_OUT_REG 0
#define MX_PA_SZ_Reg_8 0
#define MX_PA_SZ_Reg_16 1
#define MX_PA_SZ_Reg_32 2
#define MX_PA_SZ_Reg_64 3
#define MX_PA_SZ_Reg_128 4
#define MX_PA_SZ_Reg_256 5
#define MX_PA_SZ_Reg_512 6
#define MX_PA_SZ_Reg_1023 7
#define EP_DBEN DOUBLE_BLK
#if 1
//#ifdef PX_BULK
#define EP1_TYPE TF_TYPE_BULK
#define EP1_DIR DIRECTION_IN_REG
#define EP1_MPACKET MX_PA_SZ_Reg_64
#define EP2_TYPE TF_TYPE_BULK
#define EP2_DIR DIRECTION_OUT_REG
#define EP2_MPACKET MX_PA_SZ_Reg_64
#define EP1_CFG (EP1_TYPE<<5)|(EP1_DIR<<4)|(EP_DBEN<<3)|(EP1_MPACKET)
#define EP2_CFG (EP2_TYPE<<5)|(EP2_DIR<<4)|(EP_DBEN<<3)|(EP2_MPACKET)
#else
#define EP1_TYPE TF_TYPE_INTERRUPT
#define EP1_DIR DIRECTION_IN_REG
#define EP1_MPACKET MX_PA_SZ_Reg_16
#define EP2_TYPE TF_TYPE_BULK
#define EP2_DIR DIRECTION_IN_REG
#define EP2_MPACKET MX_PA_SZ_Reg_64
#define EP3_TYPE TF_TYPE_BULK
#define EP3_DIR DIRECTION_OUT_REG
#define EP3_MPACKET MX_PA_SZ_Reg_64
#define EP4_TYPE TF_TYPE_BULK
#define EP4_DIR DIRECTION_IN_REG
#define EP4_MPACKET MX_PA_SZ_Reg_64
#define EP5_TYPE TF_TYPE_BULK
#define EP5_DIR DIRECTION_OUT_REG
#define EP5_MPACKET MX_PA_SZ_Reg_64
#define EP1_CFG (EP1_TYPE<<5)|(EP1_DIR<<4)|(SINGLE_BLK<<3)|(EP1_MPACKET)
#define EP2_CFG (EP2_TYPE<<5)|(EP2_DIR<<4)|(EP_DBEN<<3)|(EP2_MPACKET)
#define EP3_CFG (EP3_TYPE<<5)|(EP3_DIR<<4)|(EP_DBEN<<3)|(EP3_MPACKET)
#define EP4_CFG (EP4_TYPE<<5)|(EP4_DIR<<4)|(EP_DBEN<<3)|(EP4_MPACKET)
#define EP5_CFG (EP5_TYPE<<5)|(EP5_DIR<<4)|(EP_DBEN<<3)|(EP5_MPACKET)
#endif
// Endpoint number define
#define EP0 0x00
#define EP1 0x01
#define EP2 0x02
#define EP3 0x03
#define EP4 0x04
#define EP5 0x05
#define EP6 0x06
#define EP7 0x07
#define EP8 0x08
#define EP9 0x09
#define EP10 0x10
#define EP11 0x11
#define EP12 0x12
#define EP13 0x13
#define EP14 0x14
#define EP15 0x15
//=================== 1.Define Data Type ===============================================================
//========================================================================================================
#define MESS_ERROR (0x01 << 0)
#define MESS_WARNING (0x01 << 1)
#define MESS_INFO (0x01 << 2)
#define TRUE 1
#define FALSE 0
#define BIT0 0x00000001
#define BIT1 0x00000002
#define BIT2 0x00000004
#define BIT3 0x00000008
#define BIT4 0x00000010
#define BIT5 0x00000020
#define BIT6 0x00000040
#define BIT7 0x00000080
#define BIT8 0x00000100
#define BIT9 0x00000200
#define BIT10 0x00000400
#define BIT11 0x00000800
#define BIT12 0x00001000
#define BIT13 0x00002000
#define BIT14 0x00004000
#define BIT15 0x00008000
#define BIT16 0x00010000
#define BIT17 0x00020000
#define BIT18 0x00040000
#define BIT19 0x00080000
#define BIT20 0x00100000
#define BIT21 0x00200000
#define BIT22 0x00400000
#define BIT23 0x00800000
#define BIT24 0x01000000
#define BIT25 0x02000000
#define BIT26 0x04000000
#define BIT27 0x08000000
#define BIT28 0x10000000
#define BIT29 0x20000000
#define BIT30 0x40000000
#define BIT31 0x80000000
#define mLowByte(u16) ((U8)(u16 ))
#define mHighByte(u16) ((U8)(u16 >> 8))
////// Define USB defines//////
// 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 TEST_J 0x02
#define TEST_K 0x04
#define TEST_SE0_NAK 0x08
#define TEST_PKY 0x10
//=================== 2.Define Macro =====================================================================
//========================================================================================================
// Macro volatile
#define USB_BASE_ADDRESS 0x60900000
#define mbUSB(bOffset) *((volatile U8 *) ( USB_BASE_ADDRESS | bOffset))
#define mwUSB(bOffset) *((volatile U16 *) ( USB_BASE_ADDRESS | bOffset))
#define mdwUSB(bOffset) *((volatile U32 *) ( USB_BASE_ADDRESS | bOffset))
//Offset:0x200(Device Status Register)
#define mdw_StsCFGRd() (mdwUSB(0x200)&BIT21)
#define mb_StsCFGSet() (mbUSB(0x202) |= BIT5)
#define mb_StsCFGClr() (mbUSB(0x202) &= ~BIT5)
#define mb_StsCNNSTSRd() (mbUSB(0x202) & BIT4)
#define mw_StsFRMNUMRd() (((U16)(mdwUSB(0x200)>>8))&0x0FFF)
#define mb_StsDEVADDRSet(bAddress) (mbUSB(0x200)=(U8)bAddress)
//Offset:0x204(Device Major Interrupt Status)
#define mdw_MajorIntStsSet(dwValue) (mdwUSB(0x204)=(U32)dwValue)
#define mdw_MajorIntStsRd() (mdwUSB(0x204))
#define mb_MajorIntSts_URSTClr() (mbUSB(0x206)=BIT0)
#define mdw_MajorIntSts_URSTRd() (mdwUSB(0x204)&BIT16)
#define mb_MajorIntSts_SUSPENDTClr() (mbUSB(0x206)=BIT1)
#define mdw_MajorIntSts_SUSPEND_Rd() (mdwUSB(0x204)&BIT17)
#define mdw_MajorIntSts_SOF_Rd() (mdwUSB(0x204)&BIT18)
#define mb_MajorIntSts_SOFTClr() (mbUSB(0x206)=BIT2)
//Offset:0x208(Device Control Register)
#define mdw_Ctl_IE(dwValue) (mdwUSB(0x208)=dwValue)
#define mdw_Ctl_Rd() (mdwUSB(0x208))
#define mw_Ctl_ED_IESet(wValue) (mwUSB(0x208)|= (1<<wValue))
#define mw_Ctl_ED_IEClr(wValue) (mwUSB(0x208)&= ~((U16)(1<<wValue)))
#define mb_Ctl_ED_IEByte1Set(bValue) (mbUSB(0x208)|= (1<<bValue))
#define mb_Ctl_ED_IEByte1Clr(bValue) (mbUSB(0x208)&= ~((U8)(1<<bValue)))
#define mdw_Ctl_IE_URST_SET() (mdwUSB(0x208)|=BIT16)
#define mdw_Ctl_IE_URST_Clr() (mdwUSB(0x208)&=(~BIT16))
#define mdw_Ctl_IE_SUSPEND_SET() (mdwUSB(0x208)|=BIT17)
#define mdw_Ctl_IE_SUSPEND_Clr() (mdwUSB(0x208)&=(~BIT17))
#define mdw_Ctl_IE_SOF_SET() (mdwUSB(0x208)|=BIT18)
#define mdw_Ctl_IE_SOF_Clr() (mdwUSB(0x208)&=(~BIT18))
//BIT19 RESERVED
#define mdw_Ctl_IE_SWRST_SET() (mdwUSB(0x208)|=BIT20)
#define mdw_Ctl_IE_SWRST_Clr() (mdwUSB(0x208)&=(~BIT20))
#define mdw_Ctl_IE_RWKP_Set() (mdwUSB(0x208)|=BIT28)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -