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

📄 usb.h

📁 embedded usb protocol C program
💻 H
📖 第 1 页 / 共 2 页
字号:
	#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 + -