USB描述符完全解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

USB设备描述符完全解析

//======================================================= =====================

// 文件名: USBDESC.C

// 用途: USB描述符

// 作者: shenfei5

// 时间: 2007.2.3

// 版本: V1.10

//======================================================= =====================

#include

#include "usb.h" // USB模块

#include "hid.h" // HID设备

#include "usbcfg.h" // 配置USB

#include "usbdesc.h" // USB描述符

//

// HID报文描述符

//

const U8 HID_ReportDescriptor[] = {

HID_UsagePageVendor(0x00), // 报告页版本: 0X06 0X00 0XFF

HID_Usage(0x01), // 用途页: 0X05 0X01

// 如果是MOUSE,KEY,在这里应该有用法索引

HID_Collection(HID_Application), // 用法集合开始: 0XA1 0X01

HID_UsagePage(HID_USAGE_PAGE_BUTTON), // BUTTON用法页

HID_UsageMin(1), // 用法最小值

HID_UsageMax(3), // 用法最小值

HID_LogicalMin(0), // 逻辑最小值

HID_LogicalMax(1), // 逻辑最大值

HID_ReportCount(3), // 报告计数(3)

HID_ReportSize(1), // 报告页大小(1)

HID_Input(HID_Data | HID_Variable | HID_Absolute), // 输入(2)

HID_ReportCount(1), // 报告计数值

HID_ReportSize(5), // 报告大小

HID_Input(HID_Constant), // 输入1

HID_UsagePage(HID_USAGE_PAGE_LED), // LED用法页

HID_Usage(HID_USAGE_LED_GENERIC_INDICATOR), // 用法页

HID_LogicalMin(0), // 用法最小值

HID_LogicalMax(1), // 用法最大值

HID_ReportCount(8), // 报告计数值

HID_ReportSize(1), // 报告大小(1)

HID_Output(HID_Data | HID_Variable | HID_Absolute), // 输出(2)

HID_EndCollection, // 报告结束

};

// HID报告描述符大小

const U16 HID_ReportDescSize = sizeof(HID_ReportDescriptor);

//

// USB 设备描述符

//

const U8 USB_DeviceDescriptor[] = {

USB_DEVICE_DESC_SIZE, // bLength 描述符长度= 12H

USB_DEVICE_DESCRIPTOR_TYPE, // bDescriptorType 描述符类型= 1H

WBVAL(0x0110), // 1.10 // bcdUSB 设备版本号= 你发行的版本的号

0x00, // bDeviceClass 类型代码= 由USB指定

0x00, // bDeviceSubClass 子类型代码= 由USB分配

0x00, // bDeviceProtocol 协议代码= 由USB分配

USB_MAX_PACKET0, // bMaxPacketSize0 端点0的容量= 64(只能是8,16,32,64) WBVAL(0x1977), // idVendor 供应商ID(同USB协会分配,我就自己分配一份)

WBVAL(0X1006), // idProduct 产品ID(由厂商分配)

WBVAL(0x0100), // 1.00 // bcdDevice ( 设备出厂编号)

0x04, // iManufacturer ( 厂商描述字符串索引, 用来在字符串索引中查找字符串)

0x20, // iProduct ( 产品描述字符串索引, 用来在字符串索引中查找字符串)

0x42, // iSerialNumber ( 设备序列号描述字符串索引, 用来在字符串索引中查找字符串)0x01 // bNumConfigurations (配置字符串的个数)

};

//

// USB 描述符集

// 所有描述符(配置描述符, 接口描述符, 端点描述符, USB类描述符, 设备描述符

//

const U8 USB_ConfigDescriptor[] = {

// 配置描述符

USB_CONFIGUARTION_DESC_SIZE, // bLength 描述符长度= 9H

USB_CONFIGURATION_DESCRIPTOR_TYPE, // bDescriptorType 描述符类型= 2H WBVAL( // wTotalLength

USB_CONFIGUARTION_DESC_SIZE + // 返回描述符串集的长度, 配置描述字符长度

USB_INTERFACE_DESC_SIZE + // 接口描述字符长度

HID_DESC_SIZE + // HID描述字符长度

USB_ENDPOINT_DESC_SIZE // 端点描述字符长度

相关文档
最新文档