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

📄 d12_chap9.h

📁 利用sunplus16位单片机实现USB接口的全套技术资料
💻 H
字号:
#ifndef	__CHAP9_h__
#define	__CHAP9_h__
//	write your header here

#define MSB(x)	(((x) >> 16) & 0xFFFF)

typedef unsigned int UINT;
typedef unsigned long int ULINt;

typedef union _epp_flags
{
	struct _flags
	{
		unsigned int bus_reset				: 1;
		unsigned int suspend				: 1;
		unsigned int setup_packet			: 1;
		unsigned int remote_wakeup			: 1;
		unsigned int in_isr					: 1;
		unsigned int control_state			: 2;
		unsigned int configuration			: 1;
		unsigned int Ep1_ReceiveDataFlag	: 1;
		unsigned int Ep1_SendDataFlag		: 1;
		unsigned int Ep2_ReceiveDataFlag	: 1;
		unsigned int Ep2_SendDataFlag		: 1;
	}bits;
}EPPFLAGS;

typedef struct _device_request
{
	unsigned int bmRequestType;
	unsigned int bRequest;
	unsigned long int wValue;
	unsigned long int wIndex;
	unsigned long int wLength;
}DEVICE_REQUEST;

#define MAX_CONTROLDATA_SIZE	8
typedef struct _control_transfers
{
	DEVICE_REQUEST DeviceRequest;
	unsigned long int wLength;
	unsigned long int wCount;
	unsigned int * pData;
	unsigned int dataBuffer[MAX_CONTROLDATA_SIZE];
}CONTROL_TRANSFERS;

extern EPPFLAGS bEPPflags;
extern CONTROL_TRANSFERS ControlData;

void D12_Reserved(void);
void D12_Get_Status(void);
void D12_Clear_Feature(void);
void D12_Set_Feature(void);
void D12_Set_Address(void);
void D12_Get_Descriptor(void);
void D12_Get_Configuration(void);
void D12_Set_Configuration(void);
void D12_Get_Interface(void);
void D12_Set_Interface(void);

void D12_Stall_Ep0(void);
void D12_Single_Transmit(unsigned int * buf, unsigned int len);
void D12_Code_Transmit(unsigned int * pRomData, unsigned long int len);
void D12_Init_Unconfig(void);
void D12_Init_Config(void);

#define D12_STALL				0x02

#define USB_RECIPIENT				(unsigned char)0x1F
#define USB_RECIPIENT_DEVICE		(unsigned char)0x00
#define USB_RECIPIENT_INTERFACE		(unsigned char)0x01
#define USB_RECIPIENT_ENDPOINT		(unsigned char)0x02

#define MAX_ENDPOINTS				(unsigned int)0x3
#define EP0_PACKET_SIZE				(unsigned long int)0x0010
#define EP1_PACKET_SIZE				(unsigned long int)0x0004
#define EP2_PACKET_SIZE				(unsigned long int)0x0040

#define USB_IDLE					0
#define USB_TRANSMIT				1
#define USB_RECEIVE					2

#define USB_REQUEST_TYPE_MASK		(unsigned int)0x60
#define USB_STANDARD_REQUEST		(unsigned int)0x00
#define USB_VENDOR_REQUEST			(unsigned int)0x40
#define USB_REQUEST_MASK			(unsigned int)0x0F
#define DEVICE_ADDRESS_MASK			(unsigned int)0x7F

#define USB_DEVICE_DESCRIPTOR_TYPE				0x01
#define USB_CONFIGURATION_DESCRIPTOR_TYPE		0x02
#define USB_STRING_DESCRIPTOR_TYPE				0x03
#define USB_INTERFACE_DESCRIPTOR_TYPE			0x04
#define USB_ENDPOINT_DESCRIPTOR_TYPE			0x05
#define USB_POWER_DESCRIPTOR_TYPE				0x06

#define USB_ENDPOINT_TYPE_MASK					0x03
#define USB_ENDPOINT_TYPE_CONTROL				0x00
#define USB_ENDPOINT_TYPE_ISOCHRONOUS			0x01
#define USB_ENDPOINT_TYPE_BULK					0x02
#define USB_ENDPOINT_TYPE_INTERRUPT				0x03
#define USB_ENDPOINT_DIRECTION_MASK				0x80

#define USB_FEATURE_ENDPOINT_STALL				0x0000
#define USB_FEATURE_REMOTE_WAKEUP				0x0001

#endif

⌨️ 快捷键说明

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