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

📄 usb.h

📁 ST公司的upsd34XX评估板固定源程序
💻 H
字号:
///////////////////////////////////////////////////////////////////////
// Usb.h
//
// USB structures and constants.

#ifndef USB_H
#define USB_H

/////////////////// iword
//
// Intel word structure.

typedef struct 
{
	uchar lo;
	uchar hi;
} iword;

// USB 1.1 device descriptor

typedef struct 
{
	uchar bLength;				// Size of this Descriptor in Bytes
	uchar bDescriptorType;		// Descriptor Type (=1)
	iword bcdUSB;				// USB Spec Release Number in BCD
	uchar bDeviceClass;			// Device Class Code
	uchar bDeviceSubClass;		// Device Subclass Code	
	uchar bDeviceProtocol;		// Device Protocol Code
	uchar bMaxPacketSize0;		// Maximum Packet Size for EP0 
	iword idVendor;				// Vendor ID 
	iword idProduct;			// Product ID
	iword bcdDevice;			// Device Release Number in BCD
	uchar iManufacturer;		// Index of String Desc for Manufacturer
	uchar iProduct;				// Index of String Desc for Product
	uchar iSerialNumber;		// Index of String Desc for SerNo
	uchar bNumConfigurations;	// Number of possible Configurations
} device_descriptor;

// USB 1.1 configuration descriptor

typedef struct 
{
	uchar bLength;				// Size of this Descriptor in Bytes
	uchar bDescriptorType;		// Descriptor Type (=2)
	iword wTotalLength;			// Total Length of Data for this Conf
	uchar bNumInterfaces;		// No of Interfaces supported by this Conf
	uchar bConfigurationValue;	// Designator Value for *this* Configuration
	uchar iConfiguration;		// Index of String Desc for this Conf
	uchar bmAttributes;			// Configuration Characteristics (see below)
	uchar bMaxPower;			// Max. Power Consumption in this Conf (*2mA)
} configuration_descriptor;

// USB 1.1 interface descriptor

typedef struct 
{
	uchar bLength;				// Size of this Descriptor in Bytes
	uchar bDescriptorType;		// Descriptor Type (=4)
	uchar bInterfaceNumber;		// Number of *this* Interface (0..)
	uchar bAlternateSetting;	// Alternative for this Interface (if any)
	uchar bNumEndpoints;		// No of EPs used by this IF (excl. EP0)
	uchar bInterfaceClass;		// Interface Class Code
	uchar bInterfaceSubClass;	// Interface Subclass Code
	uchar bInterfaceProtocol;	// Interface Protocol Code
	uchar iInterface;			// Index of String Desc for this Interface
} interface_descriptor;

// USB 1.1 endpoint descriptor

typedef struct 
{
	uchar bLength;				// Size of this Descriptor in Bytes
	uchar bDescriptorType;		// Descriptor Type (=5)
	uchar bEndpointAddress;		// Endpoint Address (Number + Direction)
	uchar bmAttributes;			// Endpoint Attributes (Transfer Type)
	iword wMaxPacketSize;		// Max. Endpoint Packet Size
	uchar bInterval;			// Polling Interval (Interrupt) in ms
} endpoint_descriptor;

// USB SETUP packet

typedef struct 
{
	uchar bmRequestType;		// Characteristics (Direction,Type,Recipient)
	uchar bRequest;				// Standard Request Code
	iword wValue;				// Value Field
	iword wIndex;				// Index or Offset Field
	iword wLength;				// Number of Bytes to transfer (Data Stage)
} setup_buffer;

// USB Status Codes

#define US_ATTACHED			0x00
#define US_POWERED			0x01
#define US_DEFAULT			0x02
#define US_ADDRESSED		0x03
#define US_CONFIGURED		0x04
#define US_SUSPENDED		0x80

// USB Standard Device Request Codes

#define GET_STATUS			0x00
#define CLEAR_FEATURE		0x01
#define SET_FEATURE			0x03
#define SET_ADDRESS			0x05
#define GET_DESCRIPTOR		0x06
#define SET DESCRIPTOR		0x07	// optional
#define GET_CONFIGURATION	0x08
#define SET_CONFIGURATION	0x09
#define GET_INTERFACE		0x0a
#define SET_INTERFACE		0x0b
#define SYNCH_FRAME			0x0c	// optional

#define REQUEST_COMPLETE	0xff	// not part of the Standard - just
									// a Flag to indicate that the recent
									// request has been finished
// Descriptor Types

#define DT_DEVICE			1
#define DT_CONFIGURATION	2
#define DT_STRING			3
#define DT_INTERFACE		4
#define DT_ENDPOINT			5

#endif

⌨️ 快捷键说明

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