USB描述符舉例

來源:互聯網
上載者:User
 裝置描述符

  裝置描述符給出了USB裝置的一般資訊。這包括裝置及裝置設定全程起作用的資訊,一個USB裝置只能有一個裝置描述符。所有的USB裝置都有預設的控制管道,在裝置描述符中給定了預設控制管道最大包長度。      

  ROM USB_DEVICE_DESCRIPTOR device_dsc={ 0x12,    //BYTE bLength描述符長度 0x01,     // BYTE bDescriptorType描述符類型固定 為 0x01  一個位元組 0x0200,   //WORD bcdUSB規範版本號碼(採用BCD碼) 0x00,    //BYTE bDeviceClass,類代碼 表示所遵循的標準裝置類0x01~0xfe為標準設//備類,0xff為廠商自訂類型 //0x00不是在裝置描述符中定義的,如HID  為0時表示//裝置的各個介面相互獨立,在介面描述符中將進一步定義 0x00,   //BYTE bDeviceSubClass對裝置類更加細緻定義  0x00,   //BYTE bDeviceProtocl協議代碼,為0 表示不使用任何裝置類協議 8,     //BYTE bMaxPacketSize0端點0所支援的最大資料包長度,0x04D8,   //WORD idVendor USB裝置的供應商ID0x003F,   //WORD idProduct USB產品ID0x0002,   // BCD碼錶示USB裝置的版本號碼,由供應商指定0x01,    //WORD bcdDevice供應商字串描述符索引值0x02,    // BYTE iManufacturer產品字串描述符索引值0x00,    // BYTE iProduct USB設別序號字串描述符索引值,為0 表示沒有  0x01     // BYTE iSerialNumber USB裝置所支援的配置數數       };
 配置描述符

  配置描述符給出了裝置配置的資訊,描述表包括一個bConfigurationValue域,在SetConfiguration( )請求時作為參數來設定所需的配置備。此描述符給出了此配置下的介面數,每個介面可能獨立操作。

ROM BYTE configDescriptor1[]={0x09,    //BYTE bLength  配置描述符長度,固定為 0x09位元組0x02, //BYTE bDescriptorType USB描述符類型 固定為 02H 對應上面為0x12則為0x010x29,0x00,  //WORD wTotalLength 配置資訊總長度,包括配置、介面、端點描述符 1,      // BYTE bNumInterface 該配置所支援的介面數 1,      //BYTE bConfigurationVale配置值Set_Configuration命令需要的參數值  0,      // BYTE iConfiguration字串描述符索引值,為0 表示沒有配置字串 0xe0,   //BYTE bmAttribute配置屬性,供電模式的選擇, see usb_device.h 第六位置 1//              //表示使用匯流排電源,第五位置 1 表示支援遠程喚醒功能,其它為保留,一般         //0~4位置0,第七位置1,設為11100000b50,        // BYTE MaxPower所需要的最大匯流排電流即裝置從匯流排提取的最大電流單位          //2mA,最大500mA,設定為250 
介面描述符

  介面描述符在一個配置內給出一個介面的資訊,如果一個配置支援多個介面,端點的描述符會跟在介面描述符後被返回。介面描述符總是作為配置描述符的一部分返回的。SetInterface( )與GetInterface( )用來選擇和返回選擇了的介面設定。一個介面描述符的端點個數不把端點0計算在內。

 0x09,    // BYTE bLength  裝置描述符的位元組數大小 0x04,     // BYTE bDescriptorType  描述符類型編號  0,        // BYTE bInterfaceNunber   介面的編號 0,        // BYTE bAlternateSetting 備用的介面描述符編號2,        // BYTE bNumEndpoints  該介面使用端點總數,不包括端點00x03,     // BYTE bInterfaceClass  介面類型,所屬裝置類,這裡為HID類  0,      // BYTE bInterfaceSubClass   介面子類型如果裝置類在1-FEH之間則需進一         //步表示裝置子類0,     // BYTE bInterfaceProtocol    介面所遵循的協議 0,     // BYTE iInterface    描述該介面的字串索引值 
 HID 描述符

       除了標準的USB描述符,HID裝置還必須支援HID描述符、報告描述符和物理描述符(可選)。HID描述符用於識別USB裝置中包含的額外描述符例如報告描述符. 

 0x09,        //bLength描述符長度  sizeof(USB_HID_DSC)+3,    0x21,         //bDescriptorType 描述符類型:  HID = 0x21 0x11,0x01,    //bcdHID   HID規範版本號碼(BCD碼),此為1.11 0x00,         //bCountryCode 國家代碼 00 表示裝置不是本土化的 1,           // bNumDescriptor 支援的其他類描述符數量 see usbcfg.h 0x22,         //bDescriptorType 報告描述符類型 28,0x00,      //WDescriptorLength  報告描述符總長度sizeof(hid_rpt01),      
 端點描述符

  每個介面使用的端點都有自己的描述符,描述符被主機用來決定每個端點的頻寬需求。每個端點的描述符總是作為裝置設定描述的一部分返回,而控制端點0沒有描述符。

/***************端點1 描述符 輸入*********************/0x07,   // BYTE bLength  裝置描述符長度 位元組數大小 *sizeof(USB_EP_DSC)0x05,    // BYTE bDescriptorType  描述符類型編號0x81,    // BYTE bEndpointAddress 端點號、傳輸方向,,第7位 表示端點的資料轉送        //方向,0表示OUT資料轉送,1表示IN資料轉送,第0~3表示連接埠號碼001B         //表示端點1,。0x03,   //端點特性,00B表示控制傳輸 01同步傳輸,10B塊傳輸,11B 中斷0x40,0x00,    //WORD wMaxPacketSize  端點收、發的最大包的大小0x01,         //BYTE bInterval   主機查詢端點的時間間隔 ms       /***************端點1描述符 輸出*********************/0x07,    //BYTE bLength 0x05,    //Endpoint Descriptor 0x01,     //EndpointAddress  0表示OUT輸入0x03,       //Attributes0x40,0x00   //size 0x01        //Interval       };

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.