99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

單片機(jī)匠人 ? 來(lái)源:?jiǎn)纹瑱C(jī)匠人 ? 作者: 黃忠老師 ? 2021-12-02 14:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

USB只是一個(gè)總線(xiàn),只提供一個(gè)數(shù)據(jù)通路而已。USB總線(xiàn)驅(qū)動(dòng)程序并不知道一個(gè)設(shè)備具體如何操作,有哪些行為。具體的一個(gè)設(shè)備實(shí)現(xiàn)什么功能,要由設(shè)備自己來(lái)決定。那么,USB主機(jī)是如何知道一個(gè)設(shè)備的功能以及行為呢?這就要通過(guò)描述符來(lái)實(shí)現(xiàn)了。那么什么是USB的描述符呢?其實(shí)就是一些傳遞的協(xié)議信息,比如設(shè)備的類(lèi)型、廠(chǎng)商ID、產(chǎn)品ID、端點(diǎn)情況、版本號(hào)等信息。

既然描述符是協(xié)議信息,那么不同的版本也會(huì)有所不同,比如USB1.1協(xié)議定義的標(biāo)準(zhǔn)描述符有設(shè)備描述符、配置描述符、接口描述符、端點(diǎn)描述符、字符串描述符、類(lèi)特殊描述符以及廠(chǎng)商自定義的描述符。那么USB2.0協(xié)議中又增加了兩個(gè)新的標(biāo)準(zhǔn)描述符有設(shè)備限定符描述符和其他速度配置描述符。隨著USB協(xié)議版本的提升,大家知道都是為了提升速度和可靠度,讓用戶(hù)有更快更高效的體驗(yàn)。那么USB1.1是全速設(shè)備,現(xiàn)在我們一起看下USB1.1協(xié)議定義的描述符吧。

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

如果有類(lèi)特殊描述符,它跟在相應(yīng)的接口描述符之后。由此可以看出,USB的描述符之間的關(guān)系是一層一層的,最上一層是設(shè)備描述符,接下來(lái)是配置描述符,再下來(lái)是接口描述符,最下面是端點(diǎn)描述符。在主機(jī)獲取描述符時(shí),首先獲取設(shè)備描述符,接著再獲取配置描述符,然后根據(jù)配置描述符中的配置集合的總長(zhǎng)度,一次將配置描述符、接口描述符、類(lèi)特殊描述符(如果有)、端點(diǎn)描述符一次讀回。對(duì)于字符串描述符,是單獨(dú)獲取的。主機(jī)通過(guò)發(fā)送獲取字符串描述符的請(qǐng)求以及描述符的索引號(hào)、語(yǔ)言ID來(lái)獲取對(duì)應(yīng)的字符串描述符。

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

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

l 接口描述符主要記錄的信息有:接口的編號(hào)、接口的端點(diǎn)數(shù)、接口所使用的類(lèi)、子類(lèi)、協(xié)議等。

l 端點(diǎn)描述符主要記錄的信息有:端點(diǎn)號(hào)及方向、端點(diǎn)的傳輸類(lèi)型、最大包長(zhǎng)度、查尋時(shí)間間隔等。

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

說(shuō)了半天,也許你還沒(méi)搞清楚到底設(shè)備、配置、接口、端點(diǎn)等這些是什么東西。不要急,這些東西的確是有點(diǎn)暈人。特別是剛接觸時(shí),這么多的內(nèi)容很容易讓人搞混,或者似乎是懂了,然后再想想,似乎又沒(méi)懂……這些所說(shuō)的設(shè)備,就是一個(gè)實(shí)實(shí)在在的USB設(shè)備,例如一個(gè)USB鼠標(biāo)。設(shè)備有一個(gè)設(shè)備地址,USB主機(jī)依靠這個(gè)設(shè)備地址來(lái)訪(fǎng)問(wèn)設(shè)備。而在設(shè)備內(nèi)部還會(huì)分的更細(xì)。

它會(huì)分出一些端點(diǎn)出來(lái),例如端點(diǎn)0、端點(diǎn)1等。就是說(shuō),如果USB主機(jī)要和USB設(shè)備通信,光有設(shè)備地址是不夠的,還需要一個(gè)端點(diǎn)地址。有了設(shè)備地址和端點(diǎn)地址,就能準(zhǔn)確地對(duì)端點(diǎn)發(fā)送和讀取數(shù)據(jù)了。好比你要去找8號(hào)教學(xué)樓的605教室,8號(hào)樓就是設(shè)備地址,而605教室就是端點(diǎn)地址。而配置和接口,是為了更方便地管理端點(diǎn)而抽象出來(lái)的概念。一個(gè)設(shè)備可以有多個(gè)配置,但是同一時(shí)刻只能有一個(gè)配置有效。每個(gè)配置下又可以有多個(gè)接口。當(dāng)我們需要不同的功能時(shí),只要選擇不同的配置即可。

拿剛才的教學(xué)樓來(lái)說(shuō),我們可以把它分成兩個(gè)配置:平時(shí)上課用和考試用??荚囉脮r(shí),全部的教室都拿來(lái)作考場(chǎng)(即該配置下只有一個(gè)接口,接口下有很多端點(diǎn)---教室);而平時(shí)上課用時(shí),分成兩類(lèi)(即該配置下有兩個(gè)接口,每個(gè)接口下有一些端點(diǎn)---教室):教師休息室和上課的課室。教師休息室和課室是不能共用的(這在USB中也是如此,同一個(gè)端點(diǎn)號(hào)不能出現(xiàn)在同一個(gè)配置下的兩個(gè)或者更多個(gè)不同的接口中)。但是平時(shí)用來(lái)做課室或者休息室的教室,考試時(shí)都可以拿來(lái)作考場(chǎng)(這在USB中也是如此,同一個(gè)端點(diǎn)號(hào)可用在不同的配置中)。

具有多個(gè)接口并由接口來(lái)實(shí)現(xiàn)功能的設(shè)備把它叫做USB復(fù)合設(shè)備,例如一個(gè)USB音頻設(shè)備,它具有一個(gè)音頻控制接口,另外還可能具有一到多個(gè)音頻流或MIDI流接口。在主機(jī)端會(huì)把USB復(fù)合設(shè)備的每個(gè)接口當(dāng)作一個(gè)功能設(shè)備來(lái)看待。像常見(jiàn)的USB鼠標(biāo)、U盤(pán)等,通常是單一的設(shè)備,即一個(gè)設(shè)備下只有一個(gè)配置描述符、一個(gè)接口描述符。

總結(jié)一下:由端點(diǎn)構(gòu)成一個(gè)接口(或者反過(guò)來(lái)說(shuō),接口是端點(diǎn)的集合),由接口又構(gòu)成一個(gè)配置(反過(guò)來(lái)說(shuō),配置是接口的集合),再由配置構(gòu)成一個(gè)設(shè)備(設(shè)備是配置的集合)。學(xué)習(xí)USB,一定要把這些關(guān)系理清楚了,才能按照需要構(gòu)造出一個(gè)合格的USB設(shè)備。如果一個(gè)設(shè)備的各種描述符成功返回了,那么可以說(shuō)已經(jīng)成功了大半。相反,只要描述符出現(xiàn)一點(diǎn)問(wèn)題,哪怕只是一個(gè)bit的錯(cuò)誤,都可能造成設(shè)備無(wú)法識(shí)別或者無(wú)法正常工作。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    8166

    瀏覽量

    271971
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6196

    瀏覽量

    137628
  • MIDI
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    16136

原文標(biāo)題:什么是USB的描述符?

文章出處:【微信號(hào):gh_e7f294a514ca,微信公眾號(hào):?jiǎn)纹瑱C(jī)匠人】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ART-PI H750-USB-MSC設(shè)備描述符異常的原因?怎么解決?

    3.2 主機(jī)發(fā)送請(qǐng)求設(shè)備描述符的IN事務(wù)階段 3.3 接口重寫(xiě) 想咨詢(xún) 是否應(yīng)該根據(jù)文檔《USB進(jìn)階培訓(xùn)_Part1_USB類(lèi)的介紹》來(lái)查看回調(diào)函數(shù)Datain接收后對(duì)
    發(fā)表于 06-19 06:52

    cx3提示未知的描述符是怎么回事?

    我通過(guò)配置生成個(gè)新的工程 運(yùn)行起來(lái)總是提示 未知的描述符
    發(fā)表于 06-04 07:08

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

    我正試圖通過(guò) FX3 以 5200*3900 分辨率、15fps 的速度從我的 fpga 傳輸視頻數(shù)據(jù)流,但無(wú)法設(shè)置最小/最大比特率描述符值,因?yàn)?b class='flag-5'>描述符大小只有 32 位。 描述符的預(yù)期值應(yīng)該是
    發(fā)表于 05-23 06:35

    更改最大數(shù)據(jù)包大小時(shí)無(wú)法識(shí)別USB設(shè)備如何解決?

    將生產(chǎn)者 EP 端點(diǎn)描述符中的最大數(shù)據(jù)包大小從 1024 字節(jié)更改為 512 字節(jié)時(shí),無(wú)法識(shí)別 USB 設(shè)備。 請(qǐng)告知如何解決這個(gè)問(wèn)題。
    發(fā)表于 05-20 08:13

    fx3 uvc uart組合代碼在usb 2.0中不起作用怎么解決?

    。 當(dāng)我連接 2.0 電纜時(shí),它顯示設(shè)備無(wú)法識(shí)別。 請(qǐng)注意以下幾點(diǎn): 1)Windows 中的 fx3 驅(qū)動(dòng)程序是否僅在 usb 3.0 模式支持組合 uvc 和 cdc,而不支持 2.0 模式 2)或者 fx3 驅(qū)動(dòng)程序是否也支持 2.0 模式
    發(fā)表于 05-15 07:32

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

    : 使用 ehci-platform 的新高速 USB 設(shè)備編號(hào) 4 [391.934969] usb 1-1:設(shè)備描述符讀取/8,錯(cuò)誤-110 [397.134834] usb 1-
    發(fā)表于 05-14 07:36

    LPC55S28修改音頻數(shù)據(jù)格式后USB Aduio類(lèi)異常的原因?

    您好 NXP 前輩,我已經(jīng)更改了 LPC55S28 官方 SDK 上的 USB 音頻數(shù)據(jù)格式。 我的主要問(wèn)題是修改音頻流格式類(lèi)型描述符。 我的想法是將 USB Aduio 每個(gè)通道的數(shù)據(jù)字節(jié)數(shù)從 2
    發(fā)表于 03-20 07:33

    使用stm32u535實(shí)現(xiàn)usb hid custom上下位機(jī)通信功能時(shí)遇到了從上位機(jī)(計(jì)算機(jī))接收數(shù)據(jù)有個(gè)別錯(cuò)誤的問(wèn)題,怎么解決?

    usb傳輸?shù)臄?shù)據(jù)無(wú)誤。 但是調(diào)試時(shí)發(fā)現(xiàn)下位機(jī)接收到的數(shù)據(jù)第21~24位發(fā)生了改變。 調(diào)試后發(fā)現(xiàn)這些被改變的值和設(shè)備描述符的接收數(shù)據(jù)長(zhǎng)度有關(guān),如下圖分別是將修改為0x20和0x40后的變化。 此
    發(fā)表于 03-12 07:16

    使用官方評(píng)估板STM32H563ZI進(jìn)行USB虛擬串口開(kāi)發(fā),下載后電腦提示USB設(shè)備無(wú)法識(shí)別,設(shè)備描述符請(qǐng)求失敗怎么解決?

    使用官方評(píng)估板STM32H563ZI進(jìn)行USB虛擬串口開(kāi)發(fā),找到官方例程:Ux_Device_HID_CDC_ACM,屏蔽掉HID相關(guān)的配置和初始化代碼,下載后電腦提示USB設(shè)備無(wú)法識(shí)別,設(shè)備描述符請(qǐng)求失??!求指教!??!
    發(fā)表于 03-11 08:06

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

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

    服務(wù)器數(shù)據(jù)恢復(fù)——Ext4文件系統(tǒng)umount失敗的數(shù)據(jù)恢復(fù)案例

    塊組:Ext4文件系統(tǒng)的全部空間被劃分為若干個(gè)塊組,每個(gè)塊組結(jié)構(gòu)基本上相同。 塊組描述符表:每個(gè)塊組都對(duì)應(yīng)個(gè)塊組描述符,這些塊組描述符統(tǒng)
    的頭像 發(fā)表于 11-13 13:25 ?847次閱讀
    服務(wù)器數(shù)據(jù)恢復(fù)——Ext4文件系統(tǒng)umount失敗的數(shù)據(jù)恢復(fù)案例

    聊以太網(wǎng)發(fā)送描述符

    相對(duì)于其他總線(xiàn),以太網(wǎng)的知識(shí)龐雜,當(dāng)然,可獲取的資料也豐富。以太網(wǎng)的知識(shí)從驅(qū)動(dòng)層到上層協(xié)議棧,很難一下消化,所以,不妨從點(diǎn)開(kāi)始,不斷地拓展和鏈接,從而形成完整地以太網(wǎng)知識(shí)框架,進(jìn)而更好地解決工程問(wèn)題。
    的頭像 發(fā)表于 10-22 15:09 ?1202次閱讀
    聊<b class='flag-5'>一</b>聊以太網(wǎng)發(fā)送<b class='flag-5'>描述符</b>

    TLV320AIC3254EVM-K連接電腦無(wú)法識(shí)別USB是怎么回事?

    電腦系統(tǒng)是win10的,本來(lái)是可以識(shí)別的,后來(lái)我打開(kāi)DFUTEST.exe,下載了image內(nèi)的個(gè)bin文件就變成無(wú)法識(shí)別USB了?,F(xiàn)在要怎么辦? 電腦設(shè)備管理器,USB識(shí)別顯示:未知US
    發(fā)表于 10-12 08:10

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

    設(shè)備描述器請(qǐng)求響應(yīng)只包含了應(yīng)包含的 18 個(gè)字節(jié)中的 8 個(gè)字節(jié)。 描述符內(nèi)容包括正確的長(zhǎng)度 18,但響應(yīng)中沒(méi)有包含該數(shù)據(jù)。 FX3 固件將描述符創(chuàng)建為個(gè)常量變量 \"
    發(fā)表于 07-26 08:26

    嵌入式開(kāi)發(fā) Win11安裝ST-Link 提示 設(shè)備描述符請(qǐng)求失敗 怎么處理?

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