女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

科普一下什么是USB的描述符

單片機匠人 ? 來源:單片機匠人 ? 作者: 黃忠老師 ? 2021-12-02 14:41 ? 次閱讀

USB只是一個總線,只提供一個數據通路而已。USB總線驅動程序并不知道一個設備具體如何操作,有哪些行為。具體的一個設備實現什么功能,要由設備自己來決定。那么,USB主機是如何知道一個設備的功能以及行為呢?這就要通過描述符來實現了。那么什么是USB的描述符呢?其實就是一些傳遞的協議信息,比如設備的類型、廠商ID、產品ID、端點情況、版本號等信息。

既然描述符是協議信息,那么不同的版本也會有所不同,比如USB1.1協議定義的標準描述符有設備描述符、配置描述符、接口描述符、端點描述符、字符串描述符、類特殊描述符以及廠商自定義的描述符。那么USB2.0協議中又增加了兩個新的標準描述符有設備限定符描述符和其他速度配置描述符。隨著USB協議版本的提升,大家知道都是為了提升速度和可靠度,讓用戶有更快更高效的體驗。那么USB1.1是全速設備,現在我們一起看下USB1.1協議定義的描述符吧。

一個USB設備只有一個設備描述符。設備描述符里決定了該設備有多少種配置,每種配置都有一個配置描述符;而在每個配置描述符中又決定了該配置里有多少個接口,每個接口都有一個接口描述符;在接口描述符里又定義了該接口有多少個端點,每個端點都有一個端點描述符;端點描述符定義了端點的大小、類型等。

如果有類特殊描述符,它跟在相應的接口描述符之后。由此可以看出,USB的描述符之間的關系是一層一層的,最上一層是設備描述符,接下來是配置描述符,再下來是接口描述符,最下面是端點描述符。在主機獲取描述符時,首先獲取設備描述符,接著再獲取配置描述符,然后根據配置描述符中的配置集合的總長度,一次將配置描述符、接口描述符、類特殊描述符(如果有)、端點描述符一次讀回。對于字符串描述符,是單獨獲取的。主機通過發送獲取字符串描述符的請求以及描述符的索引號、語言ID來獲取對應的字符串描述符。

l 設備描述符主要記錄的信息有:設備所使用的USB協議版本號、設備類型、端點0的最大包大小、廠商ID(VID)和產品ID(PID)、設備版本號、廠商字符串索引、產品字符串索引、設備序列號索引、可能的配置數等。

l 配置描述符主要記錄的信息有:配置所包含的接口數、配置的編號、供電方式、是否支持遠程喚醒、電流需求量等。

l 接口描述符主要記錄的信息有:接口的編號、接口的端點數、接口所使用的類、子類、協議等。

l 端點描述符主要記錄的信息有:端點號及方向、端點的傳輸類型、最大包長度、查尋時間間隔等。

l 字符串描述符主要是提供一些方便人們閱讀的信息,它不是必需的。

說了半天,也許你還沒搞清楚到底設備、配置、接口、端點等這些是什么東西。不要急,這些東西的確是有點暈人。特別是剛接觸時,這么多的內容很容易讓人搞混,或者似乎是懂了,然后再想想,似乎又沒懂……這些所說的設備,就是一個實實在在的USB設備,例如一個USB鼠標。設備有一個設備地址,USB主機依靠這個設備地址來訪問設備。而在設備內部還會分的更細。

它會分出一些端點出來,例如端點0、端點1等。就是說,如果USB主機要和USB設備通信,光有設備地址是不夠的,還需要一個端點地址。有了設備地址和端點地址,就能準確地對端點發送和讀取數據了。好比你要去找8號教學樓的605教室,8號樓就是設備地址,而605教室就是端點地址。而配置和接口,是為了更方便地管理端點而抽象出來的概念。一個設備可以有多個配置,但是同一時刻只能有一個配置有效。每個配置下又可以有多個接口。當我們需要不同的功能時,只要選擇不同的配置即可。

拿剛才的教學樓來說,我們可以把它分成兩個配置:平時上課用和考試用。考試用時,全部的教室都拿來作考場(即該配置下只有一個接口,接口下有很多端點---教室);而平時上課用時,分成兩類(即該配置下有兩個接口,每個接口下有一些端點---教室):教師休息室和上課的課室。教師休息室和課室是不能共用的(這在USB中也是如此,同一個端點號不能出現在同一個配置下的兩個或者更多個不同的接口中)。但是平時用來做課室或者休息室的教室,考試時都可以拿來作考場(這在USB中也是如此,同一個端點號可用在不同的配置中)。

具有多個接口并由接口來實現功能的設備把它叫做USB復合設備,例如一個USB音頻設備,它具有一個音頻控制接口,另外還可能具有一到多個音頻流或MIDI流接口。在主機端會把USB復合設備的每個接口當作一個功能設備來看待。像常見的USB鼠標、U盤等,通常是單一的設備,即一個設備下只有一個配置描述符、一個接口描述符。

總結一下:由端點構成一個接口(或者反過來說,接口是端點的集合),由接口又構成一個配置(反過來說,配置是接口的集合),再由配置構成一個設備(設備是配置的集合)。學習USB,一定要把這些關系理清楚了,才能按照需要構造出一個合格的USB設備。如果一個設備的各種描述符成功返回了,那么可以說已經成功了大半。相反,只要描述符出現一點問題,哪怕只是一個bit的錯誤,都可能造成設備無法識別或者無法正常工作。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • usb
    usb
    +關注

    關注

    60

    文章

    8136

    瀏覽量

    270573
  • 通信
    +關注

    關注

    18

    文章

    6167

    瀏覽量

    137335
  • MIDI
    +關注

    關注

    0

    文章

    78

    瀏覽量

    16022

原文標題:什么是USB的描述符?

文章出處:【微信號:gh_e7f294a514ca,微信公眾號:單片機匠人】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    通過 FX3 以 5200*3900 分辨率、15fps 的速度從我的 fpga 傳輸視頻數據流,但無法設置最小/最大比特率描述符值,怎么解決?

    我正試圖通過 FX3 以 5200*3900 分辨率、15fps 的速度從我的 fpga 傳輸視頻數據流,但無法設置最小/最大比特率描述符值,因為描述符大小只有 32 位。 描述符的預期值應該是
    發表于 05-23 06:35

    將CY7C68013A連接到基板管理控制器 (BMC),讀取設備描述符時發生FX2超時錯誤怎么解決?

    : 使用 ehci-platform 的新高速 USB 設備編號 4 [391.934969] usb 1-1:設備描述符讀取/8,錯誤-110 [397.134834] usb 1-
    發表于 05-14 07:36

    使用stm32u535實現usb hid custom上下位機通信功能時遇到了從上位機(計算機)接收數據有個別錯誤的問題,怎么解決?

    usb傳輸的數據無誤。 但是調試時發現下位機接收到的數據第21~24位發生了改變。 調試后發現這些被改變的值和設備描述符的接收數據長度有關,如下圖分別是將修改為0x20和0x40后的變化。 此
    發表于 03-12 07:16

    使用官方評估板STM32H563ZI進行USB虛擬串口開發,下載后電腦提示USB設備無法識別,設備描述符請求失敗怎么解決?

    使用官方評估板STM32H563ZI進行USB虛擬串口開發,找到官方例程:Ux_Device_HID_CDC_ACM,屏蔽掉HID相關的配置和初始化代碼,下載后電腦提示USB設備無法識別,設備描述符請求失敗!求指教!!!
    發表于 03-11 08:06

    USB組合設備的配置描述符定要用IAD描述符嗎?

    USB組合設備的配置描述符定要用IAD描述符
    發表于 03-11 06:41

    服務器數據恢復——Ext4文件系統umount失敗的數據恢復案例

    塊組:Ext4文件系統的全部空間被劃分為若干個塊組,每個塊組結構基本上相同。 塊組描述符表:每個塊組都對應個塊組描述符,這些塊組描述符
    的頭像 發表于 11-13 13:25 ?758次閱讀
    服務器數據恢復——Ext4文件系統umount失敗的數據恢復案例

    聊以太網發送描述符

    相對于其他總線,以太網的知識龐雜,當然,可獲取的資料也豐富。以太網的知識從驅動層到上層協議棧,很難一下消化,所以,不妨從點開始,不斷地拓展和鏈接,從而形成完整地以太網知識框架,進而更好地解決工程問題。
    的頭像 發表于 10-22 15:09 ?1067次閱讀
    聊<b class='flag-5'>一</b>聊以太網發送<b class='flag-5'>描述符</b>

    TLV320AIC3254EVM-K連接電腦無法識別USB是怎么回事?

    電腦系統是win10的,本來是可以識別的,后來我打開DFUTEST.exe,下載了image內的個bin文件就變成無法識別USB了。現在要怎么辦? 電腦設備管理器,USB識別顯示:未知US
    發表于 10-12 08:10

    在Ubuntu 20.04上使用USB 3時遇到了FX3無法枚舉的情況,怎么解決?

    設備描述器請求響應只包含了應包含的 18 個字節中的 8 個字節。 描述符內容包括正確的長度 18,但響應中沒有包含該數據。 FX3 固件將描述符創建為個常量變量 \"
    發表于 07-26 08:26

    嵌入式開發 Win11安裝ST-Link 提示 設備描述符請求失敗 怎么處理?

    請問各位前輩,嵌入式開發 Win11安裝ST-Link 提示 設備描述符請求失敗 怎么處理? 我安裝的ST-link版本是STSW_LINK009_V1.02和STSW_LINK009_V2.0.0。 目前安裝后顯示如下:
    發表于 07-23 13:53

    esp32-s2-soala-v1.2如何獲取攝像頭描述符

    descriptors from PC side,eg. run `lsusb -v` in linux, 請問我該如何獲得所需usb描述符
    發表于 06-27 06:48

    ESP32-C3載ble_hid_device_demo例程后自帶的USB串口無法識別怎么處理?

    當我在我的板子上下載了ble_hid_device_demo例程后,USB-SERIAL-JTAG口連接到電腦后不能被識別。 設備管理器中顯示:未知USB設備(設備描述符請求失敗)
    發表于 06-18 06:39

    KT1404A語音芯片USB連電腦,win7正常識別WIN10無法識別USB設備

    KT1404A語音芯片畫的板子,USB連接電腦,win7可以正常識別到U盤,WIN10提示無法識別USB設備(獲取設備描述符失敗),這是什么問題
    的頭像 發表于 06-10 18:13 ?1066次閱讀
    KT1404A語音芯片<b class='flag-5'>USB</b>連電腦,win7正常識別WIN10無法識別<b class='flag-5'>USB</b>設備

    二維PDMA可以使用描述符鏈嗎?

    我正在嘗試使用二維描述符連鎖。 編寫了些二維描述符鏈的代碼。 但我有些疑問,比如 1.二維 PDMA 可以使用描述符鏈嗎? 2.如果
    發表于 05-31 08:16

    制作了usb小pcb,在pc上總是顯示請求usb設備描述符失敗,為什么?

    我按照cyusb3-kit003電路圖 自己制作了usb小pcb但是在pc上總是顯示請求usb設備描述符失敗,我測量了所有供電以及配置管腳都是正確的。
    發表于 05-29 07:46