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

📄 catprotype.h

📁 瑞萨单片机开发软代码.非常实用小巧的平台,很多应用都可以在上面实现.
💻 H
📖 第 1 页 / 共 2 页
字号:
										USBFM.UEPIR19_4.BYTE = 0x13;\
										USBFM.UEPIR20_0.BYTE = 0x04;\
										USBFM.UEPIR20_1.BYTE = 0x14;\
										USBFM.UEPIR20_2.BYTE = 0x00;\
										USBFM.UEPIR20_3.BYTE = 0x00;\
										USBFM.UEPIR20_4.BYTE = 0x14;\
										USBFM.UEPIR21_0.BYTE = 0x04;\
										USBFM.UEPIR21_1.BYTE = 0x10;\
										USBFM.UEPIR21_2.BYTE = 0x00;\
										USBFM.UEPIR21_3.BYTE = 0x00;\
										USBFM.UEPIR21_4.BYTE = 0x15;\
										USBFM.UEPIR22_0.BYTE = 0x04;\
										USBFM.UEPIR22_1.BYTE = 0x1C;\
										USBFM.UEPIR22_2.BYTE = 0x00;\
										USBFM.UEPIR22_3.BYTE = 0x00;\
										USBFM.UEPIR22_4.BYTE = 0x16;

#define CLEAR_SETTING					unit_state[0] = 0x00;


/*	StartUp.c	*/
/*	pull up D+	*/
#define	ENABLE_DPLUS_PULLUP				PORT.P3DR.BYTE |= 0x40;		/*	-1-- ----	*/	/*	Pullup function is used to P36 pin(Active High)	*/
//#define	ENABLE_DPLUS_PULLUP				PORT.P3DR.BYTE &= 0xBF;		/*	-0-- ----	*/	/*	Pullup function is used to P36 pin(Active High)	*/

/*	disable pull up D+	*/
//#define	DISABLE_DPLUS_PULLUP			PORT.P3DR.BYTE &= ~0x40;	/*	-0-- ----	*/	/*	Pullup function is used to P36 pin(Active High)	*/
#define	DISABLE_DPLUS_PULLUP			PORT.P3DR.BYTE &= 0xBF;	/*	-0-- ----	*/	/*	Pullup function is used to P36 pin(Active High)	*/
//#define	DISABLE_DPLUS_PULLUP			PORT.P3DR.BYTE |= 0x40;	/*	-1-- ----	*/	/*	Pullup function is used to P36 pin(Active High)	*/


enum	PresentStateType		{WAIT,TRANS_IN,TRANS_OUT,STALL};
enum	SetCompleteType			{COMPLETE,INCOMPLETE};
enum	TransModeType			{CONTROL,BULK,INTERRUPT};     
enum	DecControlCmdDoneType	{CTRL_COMMAND_DONE,UNKNOWN_CTRL_COMMAND};


typedef	struct BuffType {
	unsigned char*		sPtr;
	unsigned char*		ePtr;
} BuffType;



typedef	struct InterruptType {
	union {
		unsigned long	LONG;
		struct {
			unsigned char		InterruptRegister0;
			unsigned char		InterruptRegister1;
			unsigned char		InterruptRegister2;
			unsigned char		InterruptRegister3;
		} BYTE;
	} INTERRUPT;
} InterruptType;



typedef	struct LinkType {
	/*	interrupt flag information ( these bits are concerned next informations )	*/
	/*	Endpoint Information	*/
	/*	call routine	*/
	const unsigned long			InterruptBitStream;	/*	0x00000000	*/
	const unsigned char			EpInfoNum;			/*	0	*/
	const unsigned char			DataBuffNum;		/*	0	*/
	const void					(*CallOn)(unsigned long, unsigned char, unsigned char);		/*	Act****	*/
} LinkType;



typedef struct EpInfoType {	/*	each Endpoint information	*/
	const unsigned char			epNumber;			/*	Enspoint number	*/
	enum TransModeType			transMode;			/*	transfer type	*/
	volatile unsigned char*		FifoSize;			/*	FIFO size register address
		if Endpoint dose not have FIFO size register, it's writeFifoSizeGVar[] address	*/
	volatile unsigned char*		epdrPtr;			/*	Endpoint data size regizter address	*/
	volatile unsigned long*		epdrLPtr;			/*	Endpoint data size regizter address	*/
	const unsigned char			putEnable;			/*	packet enable bit pattern	*/
	const unsigned char			getFinish;			/*	read finish bit pattern	*/
	const unsigned char			fifoClearEnable;	/*	FIFO clear bit pattern	*/
	const unsigned char			stallEnable;		/*	Endpoint stall bit pattern	*/
	enum PresentStateType		PresentState;		/*	USB transfer state	*/
	unsigned char				MaxPacketSize;		/*	Max packet size	*/
} EpInfoType;



typedef	struct ControlType {	/*	chnage received data	*/
	unsigned char*				beginPtr;	/*	start point	*/
	unsigned char*				endPtr;		/*	end point	*/
} ControlType;



typedef	union RequestType {	/*	bmRequestType definition	*/
	unsigned char byteVal;
	struct bitValType {
		unsigned char			d7:1;		/*	data transfer direction	*/
		unsigned char			d65:2;		/*	command type "standard" "class" "vendor"	*/
		unsigned char			d40:5;		/*	receive side	*/
	} bitValType;
} RequestType;



typedef	union SetupDataType {	/*	Setup Data definition	*/
	unsigned char	byteVal[8];
	struct access0Type {
		RequestType				bmRequest;	/*	request feature	*/
		unsigned char			bRequest;	/*	request number	*/
		unsigned short			wValue;		/*	Word-sized field that varies according to request (Word)	*/
		unsigned short			wIndex;		/*	Word-sized field that varies according to request ; typically used to pass an index or offset (Word)	*/
		unsigned short			wLength;	/*	Number of bytes to transfer if there is a Data Stage (Word)	*/
	} access0Type;
	struct access1Type {
		unsigned char			bmRequest;	/*	request feature	*/
		unsigned char			bRequest;	/*	request number	*/
		unsigned char			wValue_B1;	/*	Word-sized field that varies according to request 1 (Byte)	*/
		unsigned char			wValue_B2;	/*	Word-sized field that varies according to request 2 (Byte)	*/
		unsigned char			wIndex_B1;	/*	Word-sized field that varies according to request 1 ; typically used to pass an index or offset (Byte)	*/
		unsigned char			wIndex_B2;	/*	Word-sized field that varies according to request 2 ; typically used to pass an index or offset (Byte)	*/
		unsigned char			wLength_B1;	/*	Number of bytes to transfer if there is a Data Stage 1 (Byte)	*/
		unsigned char			wLength_B2;	/*	Number of bytes to transfer if there is a Data Stage 2 (Byte)	*/
	} access1Type;
} SetupDataType;



typedef	struct DiscriptorType {	/*	Descriptor	*/
	unsigned short				length;
	unsigned char*				d_data;
} DiscriptorType;




typedef	union CBWDataType {	/*	CBW struct	*/
	unsigned char	byteVal[31];
	struct cbwType {
		unsigned long			dCBWSignature;			/*	using to recognize CBW	*/
		unsigned long			dCBWTag;				/*	Comand Block Tag	*/
		unsigned long			dCBWDataTransferLength;	/*	HOST expectant data length	*/
		unsigned char			bmCBWFlags;				/*	data transfer direction	*/
		unsigned char			bCBWLUN;				/*	LUN	*/
		unsigned char			bCBWCBLength;			/*	CBWCB command length	*/
		unsigned char			cmdOpeCode;				/*	command Operation Code	*/
		unsigned char			cmd1;					/*	command	*/
		unsigned char			cmd2;					/*	command	*/
		unsigned char			cmd3;					/*	command	*/
		unsigned char			cmd4;					/*	command	*/
		unsigned char			cmd5;					/*	command	*/
		unsigned char			cmd6;					/*	command	*/
		unsigned char			cmd7;					/*	command	*/
		unsigned char			cmd8;					/*	command	*/
		unsigned char			cmd9;					/*	command	*/
		unsigned char			cmd10;					/*	command	*/
		unsigned char			cmd11;					/*	command	*/
		unsigned char			cmd12;					/*	command	*/
		unsigned char			cmd13;					/*	command	*/
		unsigned char			cmd14;					/*	command	*/
		unsigned char			cmd15;					/*	command	*/
	} cbwType;
} CBWDataType;

typedef	union CSWDataType {	/*	CSW struct	*/
	unsigned char	byteVal[13];
	struct cswMeaningType {
		unsigned long			dCSWSignature;			/*	using to recognize CSW	*/
		unsigned long			dCSWTag;				/*	related Tag for CBW	*/
		signed long				dCSWDataResidue;		/*	difference between HOST expectant data length and executed data length	*/
		unsigned char			bCSWStatus;				/*	command status	*/
	} cswMeaningType;
} CSWDataType;

typedef	union ReturnDataType {
	unsigned long	longVal[16];
	unsigned char	byteVal[64];
} ReturnDataType;


typedef	union MBRDataType {	/*	MBR	*/
	unsigned char	byteVal[532];
	struct mbrMeaningType {
		unsigned char			bsl[446];
		unsigned char			pt1[16];
		unsigned char			pt2[16];
		unsigned char			pt3[16];
		unsigned char			pt4[16];
		unsigned char			chknum[2];
	} mbrMeaningType;
} MBRDataType;



typedef	union PBRDataType {	/*	PBR	*/
	unsigned char	byteVal[62];
	struct pbrMeaningType {
		unsigned char			jump[3];				/*	Jump command to IPL	*/
		unsigned char			dummy[8];				/*	name	*/
		unsigned char			bytePerSector[2];		/*	byte numbers per one sector	*/
		unsigned char			sectorPerClaster;		/*	sector numbers per one claster	*/
		unsigned char			reserveSectorNum[2];	/*	reserved sector numbers	*/
		unsigned char			fat;					/*	FAT numbers	*/
		unsigned char			root[2];				/*	entry numbers	*/
		unsigned char			allSector[2];			/*	all sector numbers	*/
		unsigned char			mediaDiscripter;		/*	media descriptor	*/
		unsigned char			sectorPerFat[2];		/*	sector numbers per one FAT	*/
		unsigned char			sectorPerTrak[2];		/*	sector numbers per one track	*/
		unsigned char			head[2];				/*	head numbers	*/
		unsigned char			hideSector[4];			/*	hide sector numbers	*/
		unsigned char			allSectorLarge[4];			/*	hide sector numbers	*/
		unsigned char			dummy2[18];
		unsigned char			reserve[8];
	} pbrMeaningType;
} PBRDataType;


//	variable	
extern	SetupDataType			ep0PacketGVar;
extern	LinkType				jump[];
extern	unsigned char			writeFifoSizeGVar[];
extern	BuffType				BufPtr[];
extern	BuffType				contCMDGPtr;
extern	InterruptType			interruptEnableBitsGVar;

extern	ControlType				transStageGPtr;

extern	EpInfoType				EpInfo[];
extern	DiscriptorType			deviceDiscriptorGVar[];	        //	Descriptor information	
extern	DiscriptorType			configurationDiscriptorGVar[];	//	Descriptor information	
extern	DiscriptorType			stringDiscriptorGVar[];	        //	Descriptor information	

extern	CBWDataType				cbwDataGVar[];
extern	CSWDataType				cswDataGVar[];
extern	unsigned char			ansInquiryData[];
extern	BuffType				botCmdGPtr;
extern	BuffType				botDataGPtr;
extern	ReturnDataType			returnData[];
extern	unsigned long			readCapaData[];
extern	unsigned char			reqSensDataGVar[];   
extern  unsigned char			controlBeginGVar[];         


/*	Function	*/                                   
extern void						error(void);
extern unsigned long			DecBotCmd(void);
extern void						ActBulkOnly(unsigned long ,unsigned char ,unsigned char);
extern void						DecStandardCommands(void);
extern enum 					DecControlCmdDoneType	DecBOTClassCommands(void);   
extern enum						DecControlCmdDoneType	DecVenderCommands(void);                

extern	short					GetPacket(EpInfoType*,BuffType*);
extern	short					PutPacket(EpInfoType*,BuffType*);
extern	short					GetPacket4S(EpInfoType*,BuffType*);
extern  short					PutPacket4S(EpInfoType*,BuffType*);
extern enum 					SetCompleteType SetControlOutContents(ControlType*,BuffType*);

extern short					ActBulkOut(unsigned long,unsigned char,unsigned char);
extern short					ActBulkIn(unsigned long,unsigned char,unsigned char);
extern void						ActBulkInReady(unsigned long,unsigned char,unsigned char);

extern void						ActControlIn(unsigned long,unsigned char);
extern void						ActControlOut(unsigned long,unsigned char);
extern void						ActControl(unsigned long,unsigned char, unsigned char);
extern void						ActControlInOut(unsigned long, unsigned char, unsigned char);

extern void						SetUsbModule(unsigned long ,unsigned char, unsigned char );
extern void						ActBusReset(unsigned long ,unsigned char, unsigned char );
extern void						ActBusVcc(unsigned long ,unsigned char, unsigned char );

extern unsigned long			ConvRealn(unsigned char* ,unsigned char );
extern unsigned long			ConvReflexn(unsigned char*	,unsigned char );

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -