日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

USB描述符

發(fā)布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 USB描述符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

枚舉過程

USB設備枚舉一般會經過插入、供電、初始化、分配地址,配置,獲取設備描述符、獲取配置描述符、獲取字符串和配置設備這么幾個過程。(第一次獲取設備描述符就是為了獲取最大包長,在設備描述符的第8字節(jié)(因此USB規(guī)定端點0的最大包長至少8字節(jié))。在復位之后,才會真正獲取完整的設備描述符)

枚舉過程基本上就是分配地址和獲取描述符的過程。那么什么是描述符呢?

?

?

描述符

描述符是USB設備用來描述自己屬性及用途的,因此設備端必須實現對應的描述符。主機會在枚舉過程中根據描述符去確定這是一個什么設備,安裝相應的驅動。

標準的描述符有5種,USB為這些描述符定義了編號:

? ? ? ? 0x01.設備描述符:USB設備至少有一個配置描述符,但是主機同一時間只能選擇一種配置。

? ? ? ? 0x02.配置描述符:USB配置至少有一個接口描述符。

? ? ? ? 0x03.接口描述符:USB接口可以至少有一個端點描述符,也可以沒有端點描述符。

? ? ? ? 0x04.端點描述符

? ? ? ? 0x05.字符串描述符

還有一些不太常用的描述符:
? ? ? ? 0x06.限定描述符

? ? ? ? 0x07.其它速率配置描述符

? ? ? ? 0x08.接口功率描述符

? ? ? ? 0x21.HID描述符

? ? ? ? 0x22.報表描述符

?

設備描述符

  • bLength : 描述符大小。固定為0x12.
  • bDescriptorType : 描述符類型。固定為0x01.
  • bcdUSB : 本設備能適用于那種協(xié)議,如2.0=0200,1.1=0110等。
  • bDeviceClass : 類型代碼。當它的值是0時,表示所有接口在配置描述符里,并且所有接口是獨立的。當它的值是1到FEH時,表示不同的接口關聯(lián)的。當它的值是FFH時,它是廠商自己定義的。
  • bDeviceSubClass : 子類型代碼。如果bDeviceClass值是0,一定要設置為0。其它情況就跟據USB-IF組織定義的編碼。
  • bDeviceProtocol : 協(xié)議代碼。如果使用USB-IF組織定義的協(xié)議,就需要設置這里的值,否則直接設置為0。如果廠商自己定義的可以設置為FFH。
  • bMaxPacketSize0 : 端點0最大包長(只有8,16,32,64有效)。
  • idVendor : 供應商ID。
  • idProduct : 產品ID。由供應商ID和產品ID,就可以讓操作系統(tǒng)加載不同的驅動程序。
  • bcdDevice : 設備出產編碼。由廠家自行設置。
  • iManufacturer : 廠商描述符字符串索引。索引到對應的字符串描述符。 為0則表示沒有。
  • iProduct : :產品描述符字符串索引。為0則表示沒有。
  • iSerialNumber : 設備序列號字符串索引。為0則表示沒有。
  • bNumConfigurations : 配置描述符個數。

?

配置描述符

  • bLength : 描述符大小。固定為0x09。
  • bDescriptorType : 描述符類型。固定為0x02。
  • wTotalLength : 此配置返回的配置描述符,接口描述符以及端點描述符的全部大小。
  • bNumInterfaces : 該配置下接口描述符數量。
  • bConfigurationValue : 作為Set Configuration的一個參數選擇配置值。
  • iConfiguration : 用于描述該配置字符串描述符的索引。
  • bmAttributes : 供電模式選擇。Bit4-0保留,D7:總線供電,D6:自供電,D5:遠程喚醒。
  • MaxPower : 總線供電的USB設備的最大消耗電流。以2mA為單位。

?

接口描述符

  • bLength : 描述符大小。固定為0x09。
  • bDescriptorType : 描述符類型。固定為0x04。
  • bInterfaceNumber: 該接口的編號。
  • bAlternateSetting : 用于為上一個字段選擇可供替換的位置。即備用的接口描述符標號。
  • bNumEndpoint : 使用的端點數目。端點0除外。
  • bInterfaceClass : 類型代碼(由USB分配)。
  • bInterfaceSubClass : 子類型代碼(由USB分配)。
  • bInterfaceProtocol : 協(xié)議代碼(由USB分配)。
  • iInterface :?字符串描述符的索引

?

端點描述符

  • bLength : 描述符大小。固定為0x07。
  • bDescriptorType : 描述符類型。固定為0x05。
  • bEndpointAddress : 端點地址。Bit7,方向,1/0:IN/OUT。Bit6-4,保留。BIt3-0:端點號。
  • bmAttributes : 端點屬性。同步傳輸時,bit3-2:00無同步,01異步,10適配,11同步。同步傳輸時,BIT5:4:00數據端點,01反饋端點,10隱式反饋數據端點,11保留。Bit1-0:00控制,01同步,02批量,03中斷。

  • wMaxPacketSize : 支持的最大數據包大小。

  • bInterval : 輪訓數據傳送端點的時間間隔。對于批量傳送和控制傳送的端點忽略。對于同步傳送的端點,必須為1。對于中斷傳送的端點,范圍為1-255。

?

字符串描述符

  • bLength : 描述符大小。由整個字符串的長度加上bLength和bDescriptorType的長度決定。
  • bDescriptorType : 描述符類型。固定為0x03。
  • bString[1] : Unicode編碼字符串。

?

?

在USB標準類

類代碼用法描述
00h設備描述符Use class information in the interface Descriptors
01h接口描述符音頻
02h設備描述符、接口描述符通訊設備,如電話,moden等等
03h接口描述符HID設備
05h接口描述符Physical
06h接口描述符Image
07h接口描述符打印機
08h接口描述符大容量存儲
09h設備描述符Hub USB集線器
0Ah接口描述符CDC-Data
0Bh接口描述符Smart Card
0Dh接口描述符Content Security
0Eh接口描述符視頻
0Fh接口描述符Personal Healthcare
10h接口描述符音視頻設備
11h設備描述符Billboard Device Class
12h接口描述符USB Type-C Bridge Class
DCh設備描述符、接口描述符Diagnostic Device
E0h接口描述符無線控制器
EFh設備描述符、接口描述符Miscellaneous
FEh接口描述符Application Specific
FFh設備描述符、接口描述符廠商用自定義

?

總結

以上是生活随笔為你收集整理的USB描述符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。