📄 drv_usb_init.h
字号:
/************************************************* Copyright (C), 2007, DTK Computer. File name: drv_usb_init.h Author: MMI Group Version: 1.0 Date: 2008.04.30 Description: usb module for initiation Others: Function List: History: <author> <time> <version > <desc> Bosco Lee 08/30/04 1.0 build this moudle *************************************************/#ifndef __DRV_USB_INIT_H__#define __DRV_USB_INIT_H__#include "drv_usb_main.h"/*********************************************************************************************** USB 描述符结构体及其成员取值宏定义**********************************************************************************************//*********** USB 设备描述符结构体 ****************/typedef struct _USB_DEVICE_DESCRIPTOR{ D_UINT8 bLength; D_UINT8 bDescriptorType; D_UINT8 bcdUSB0; D_UINT8 bcdUSB1; D_UINT8 bDeviceClass; D_UINT8 bDeviceSubClass; D_UINT8 bDeviceProtocol; D_UINT8 bMaxPacketSize0; D_UINT8 idVendor0; D_UINT8 idVendor1; D_UINT8 idProduct0; D_UINT8 idProduct1; D_UINT8 bcdDevice0; D_UINT8 bcdDevice1; D_UINT8 iManufacturer; D_UINT8 iProduct; D_UINT8 iSerialNumber; D_UINT8 bNumConfigurations;} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;/*********** USB 配置描述符结构体 ****************/typedef struct _USB_CONFIGURATION_DESCRIPTOR{ D_UINT8 bLength; D_UINT8 bDescriptorType; D_UINT8 wTotalLength0; D_UINT8 wTotalLength1; D_UINT8 bNumInterfaces; D_UINT8 bConfigurationValue; D_UINT8 iConfiguration; D_UINT8 bmAttributes; D_UINT8 MaxPower;} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR;/*********** USB 接口描述符结构体 ****************/typedef struct _USB_INTERFACE_DESCRIPTOR{ D_UINT8 bLength; D_UINT8 bDescriptorType; D_UINT8 bInterfaceNumber; D_UINT8 bAlternateSetting; D_UINT8 bNumEndpoints; D_UINT8 bInterfaceClass; D_UINT8 bInterfaceSubClass; D_UINT8 bInterfaceProtocol; D_UINT8 iInterface;} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR;/*********** USB 端点描述符结构体 ****************/typedef struct _USB_ENDPOINT_DESCRIPTOR{ D_UINT8 bLength; D_UINT8 bDescriptorType; D_UINT8 bEndpointAddress; D_UINT8 bmAttributes; D_UINT8 wMaxPacketSize0; D_UINT8 wMaxPacketSize1; D_UINT8 bInterval;} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;/*********** USB 字符串语言描述符结构体 ****************/typedef struct _USB_STRING_LANG_ID_DESCRIPTOR{ D_UINT8 bLength; D_UINT8 bDescriptorType; D_UINT8 bString0; D_UINT8 bString1;} USB_STRING_LANG_ID_DESCRIPTOR, *PUSB_STRING_LANG_ID_DESCRIPTOR;/*********** USB 字符串描述符结构体 ****************/typedef struct _USB_STRING_DESCRIPTOR{ D_UINT8 bLength; D_UINT8 bDescriptorType; D_UINT8 bString[32];} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;//USB最大字符长度#define MAXIMUM_USB_STRING_LENGTH 255/*********** USB 电源描述符结构体 ****************/typedef struct _USB_POWER_DESCRIPTOR{ D_UINT8 bLength; D_UINT8 bDescriptorType; D_UINT8 bCapabilitiesFlags; D_UINT16 EventNotification; D_UINT16 D1LatencyTime; D_UINT16 D2LatencyTime; D_UINT16 D3LatencyTime; D_UINT8 PowerUnit; D_UINT16 D0PowerConsumption; D_UINT16 D1PowerConsumption; D_UINT16 D2PowerConsumption;} USB_POWER_DESCRIPTOR, *PUSB_POWER_DESCRIPTOR;// USB 供电描述符取值#define USB_SUPPORT_D0_COMMAND 0x01#define USB_SUPPORT_D1_COMMAND 0x02#define USB_SUPPORT_D2_COMMAND 0x04#define USB_SUPPORT_D3_COMMAND 0x08#define USB_SUPPORT_D1_WAKEUP 0x10#define USB_SUPPORT_D2_WAKEUP 0x20/*********** USB 通用描述符结构体 ****************/typedef struct _USB_COMMON_DESCRIPTOR{ D_UINT8 bLength; D_UINT8 bDescriptorType;} USB_COMMON_DESCRIPTOR, *PUSB_COMMON_DESCRIPTOR;/*********** USB HUB 描述符结构体 ***************/typedef struct _USB_HUB_DESCRIPTOR{ D_UINT8 bDescriptorLength; // Length of this descriptor D_UINT8 bDescriptorType; // Hub configuration type D_UINT8 bNumberOfPorts; // number of ports on this hub D_UINT16 wHubCharacteristics; // Hub Charateristics D_UINT8 bPowerOnToPowerGood; // port power on till power good in 2ms D_UINT8 bHubControlCurrent; // max current in mA // // room for 255 ports power control and removable bitmask D_UINT8 bRemoveAndPowerMask[64];} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR;/*********************************************************************************************** 通用 描述符结构体成员取值宏定义**********************************************************************************************//******************************************************* USB 设备请求类型掩码 masks *******************************************************///(1) 接收方: D4...D0 #define USB_RECIPIENT (D_UINT8)0x1F#define USB_RECIPIENT_DEVICE (D_UINT8)0x00#define USB_RECIPIENT_INTERFACE (D_UINT8)0x01#define USB_RECIPIENT_ENDPOINT (D_UINT8)0x02//(2) 类型: D6...D5#define USB_REQUEST_TYPE_MASK (D_UINT8)0x60#define USB_STANDARD_REQUEST (D_UINT8)0x00#define USB_CLASS_REQUEST (D_UINT8)0x20#define USB_VENDOR_REQUEST (D_UINT8)0x40//(3) 数据传输方向: D7#define DEVICE_ADDRESS_MASK 0x7F//(4) USB 请求#define USB_REQUEST_MASK (D_UINT8)0x0F//(5) USB端点方向掩码#define USB_ENDPOINT_DIRECTION_MASK 0x80#define USB_ENDPOINT_DIRECTION_OUT(addr) (!((addr) & USB_ENDPOINT_DIRECTION_MASK))#define USB_ENDPOINT_DIRECTION_IN(addr) ((addr) & USB_ENDPOINT_DIRECTION_MASK)//*******************************************************// USB 设备请求类型//*******************************************************//描述符的类型#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 //******************************************************* // 下面为基于USB 1.0规范的正确值 //*******************************************************#define USB_REQUEST_GET_STATUS 0x00#define USB_REQUEST_CLEAR_FEATURE 0x01#define USB_REQUEST_SET_FEATURE 0x03#define USB_REQUEST_SET_ADDRESS 0x05#define USB_REQUEST_GET_DESCRIPTOR 0x06#define USB_REQUEST_SET_DESCRIPTOR 0x07#define USB_REQUEST_GET_CONFIGURATION 0x08#define USB_REQUEST_SET_CONFIGURATION 0x09#define USB_REQUEST_GET_INTERFACE 0x0A#define USB_REQUEST_SET_INTERFACE 0x0B#define USB_REQUEST_SYNC_FRAME 0x0C /******************************************************* ** USB 特性选择符 ********************************************************/#define USB_FEATURE_ENDPOINT_STALL 0x0000#define USB_FEATURE_REMOTE_WAKEUP 0x0001#define USB_FEATURE_POWER_D0 0x0002#define USB_FEATURE_POWER_D1 0x0003#define USB_FEATURE_POWER_D2 0x0004#define USB_FEATURE_POWER_D3 0x0005#define USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d, i) ((D_UINT16)((D_UINT16)d<<8 | i)) /******************************************************* ** USB 配置描述符 ********************************************************/#define USB_CONFIG_POWERED_MASK 0xc0#define USB_CONFIG_BUS_POWERED 0x80#define USB_CONFIG_SELF_POWERED 0x40#define USB_CONFIG_REMOTE_WAKEUP 0x20#define BUS_POWERED 0x80#define SELF_POWERED 0x40#define REMOTE_WAKEUP 0x20 /******************************************************* ** USB 端点描述符结构体: 端点属性 ********************************************************/#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 /******************************************************* ** USB 设备类 ********************************************************/#define USB_DEVICE_CLASS_RESERVED 0x00#define USB_DEVICE_CLASS_AUDIO 0x01#define USB_DEVICE_CLASS_COMMUNICATIONS 0x02#define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03#define USB_DEVICE_CLASS_MONITOR 0x04#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05#define USB_DEVICE_CLASS_POWER 0x06#define USB_DEVICE_CLASS_PRINTER 0x07#define USB_DEVICE_CLASS_STORAGE 0x08#define USB_DEVICE_CLASS_HUB 0x09#define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF/*********************************************************************************************** USB 专用 各种描述符结构体 描述符结构体成员取值宏定义**********************************************************************************************//*********** USB USB 各种描述符结构体 *********************/typedef struct _USB_DESCRIPTOR{ USB_CONFIGURATION_DESCRIPTOR ConfigDescr; //配置描述符 USB_INTERFACE_DESCRIPTOR InterfaceDescr; //接口描述符 USB_ENDPOINT_DESCRIPTOR EP1_TXDescr; //端点1输入描述符 //USB_ENDPOINT_DESCRIPTOR EP1_RXDescr; //端点1输出描述符 //USB_ENDPOINT_DESCRIPTOR EP2_TXDescr; //端点2输入描述符 USB_ENDPOINT_DESCRIPTOR EP2_RXDescr; //端点2输出描述符 USB_STRING_LANG_ID_DESCRIPTOR LangIDDescr; USB_STRING_DESCRIPTOR StringDescr;} USB_DESCRIPTOR, *PUSB_DESCRIPTOR;/***** USB 接口描述符中: 除端点0的端点索引数目 ******/#define NUM_ENDPOINTS 2/***** USB 配置描述符长度 ******/#define CONFIG_DESCRIPTOR_LENGTH sizeof(USB_CONFIGURATION_DESCRIPTOR) +sizeof (USB_INTERFACE_DESCRIPTOR) +(NUM_ENDPOINTS * sizeof (USB_ENDPOINT_DESCRIPTOR))//(1) 端点0最大分组大小#define EP0_TX_FIFO_SIZE 64#define EP0_RX_FIFO_SIZE 64#define EP0_PACKET_SIZE 16//(2) 端点1 接收或发送的最大信息包大小#define EP1_TX_FIFO_SIZE 512#define EP1_RX_FIFO_SIZE 512#define EP1_PACKET_SIZE 64//(3) 端点2 接收或发送的最大信息包大小#define EP2_TX_FIFO_SIZE 512#define EP2_RX_FIFO_SIZE 512#define EP2_PACKET_SIZE 64//extern code USB_DEVICE_DESCRIPTOR DeviceDescr;//extern code USB_DESCRIPTOR usb_descr;extern USB_DEVICE_DESCRIPTOR DeviceDescr;extern USB_DESCRIPTOR usb_descr;#endif /* */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -