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

📄 usb.h

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