<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > USB系列之第六章:USB請求

USB系列之第六章:USB請求

發(fā)布人:電子資料庫 時(shí)間:2022-09-03 來(lái)源:工程師 發(fā)布文章
安裝包
  • 每個(gè)USB設備必須響應默認管道上的設置包。設置包用于設備的檢測和配置,并執行諸如設置USB設備的地址、請求設備描述符或檢查端點(diǎn)狀態(tài)等常見(jiàn)功能。兼容USB的主機要求所有請求在最長(cháng)5秒鐘內得到處理。它還為特定請求規定了更嚴格的時(shí)間安排:

    • 沒(méi)有數據階段的標準設備請求必須在50ms內完成。

    • 帶有數據階段的標準設備請求必須在請求500毫秒后開(kāi)始返回數據。

      • 每個(gè)數據包必須在前一個(gè)數據包成功傳輸后500毫秒內發(fā)送。

      • 狀態(tài)階段必須在最后一個(gè)數據包傳輸后50ms內完成。

    • SetAddress命令(包含數據階段)必須處理該命令并在50ms內返回狀態(tài)。在發(fā)送下一個(gè)請求之前,設備有2ms的時(shí)間更改地址。

  • 即使是最慢的設備也可以接受這些超時(shí)時(shí)間,但在調試期間可能會(huì )受到限制。50mS不允許在異步串行端口上以9600bps的速度發(fā)送許多調試字符,也不允許在線(xiàn)調試器/仿真器單步執行或中斷執行以檢查內部寄存器。因此,USB接口的調試方法與其它單片機項目不同。

    • 隨便讀一下XP-DDK,你可能會(huì )注意到主機控制器驅動(dòng)程序現在有一個(gè)USBUSER_OP_SEND_one_PACKET命令,注釋為“此API用于實(shí)現‘單步’USB事務(wù)開(kāi)發(fā)工具”。雖然這樣的工具還沒(méi)有發(fā)布,但我們只能希望很快看到一個(gè)。

  • 每個(gè)請求以一個(gè)8字節長(cháng)的設置包開(kāi)始,其格式如下:,抵消場(chǎng)大小價(jià)值說(shuō)明zeroBM請求類(lèi)型one位圖D7數據相轉移方向
    0 = Host to Device1 = Device to Host
    D6..5型
    0 = Standard1 = Class2 = Vendor3 = Reserved
    D4..0收件人
    0 = Device1 = Interface2 = Endpoint3 = Other4..31 = Reservedone布雷奎斯特one價(jià)值請求twoWValuetwo價(jià)值價(jià)值four溫得克斯two索引或偏移量索引sixW長(cháng)度two計數如果存在數據階段,要傳輸的字節數
    這個(gè) BM請求類(lèi)型字段將確定請求的方向、請求的類(lèi)型和指定的收件人 布雷奎斯特字段確定正在發(fā)出的請求。bmRequestType通常被解析,執行被分支到許多處理程序,例如標準設備請求處理程序、標準接口請求處理程序、標準端點(diǎn)請求處理程序、類(lèi)設備請求處理程序等。如何解析安裝程序包完全取決于您的喜好。其他人可以選擇先解析bRequest,然后根據每個(gè)請求確定類(lèi)型和接收者。所有USB設備的標準請求都是通用的,下一頁(yè)將詳細介紹。類(lèi)請求對于驅動(dòng)程序類(lèi)是通用的。例如,所有符合HID類(lèi)的設備都將有一組通用的類(lèi)特定請求。這些將不同于符合通信類(lèi)的設備,也不同于轉換為大容量存儲類(lèi)的設備。最后是供應商定義的請求。這些是你作為USB設備設計者可以分配的請求。這些通常因設備而異,但這完全取決于您的實(shí)現和想象。一個(gè)共同的請求可以被定向到不同的接收者,并根據接收者執行不同的功能。例如,GetStatus標準請求可以定向到設備、接口或端點(diǎn)。當定向到某個(gè)設備時(shí),它將返回指示遠程喚醒狀態(tài)以及設備是否自供電的標志。但是,如果同一個(gè)請求被定向到接口,它總是返回零,或者如果它被定向到一個(gè)端點(diǎn),它將返回該端點(diǎn)的halt標志。這個(gè)WValue 溫得克斯字段允許參數隨請求一起傳遞。 W長(cháng)度如果存在數據階段,則指定要傳輸的字節數。

標準請求
  • USB規范第9.4節詳細說(shuō)明了每個(gè)USB設備需要實(shí)現的“標準設備”請求。該標準提供了按請求對項目分組的單個(gè)表??紤]到大多數固件將按接收者解析設置包,我們將選擇按接收者分解請求,以便于檢查和實(shí)現。

標準設備請求
  • 目前有8個(gè)標準設備請求,下表詳細說(shuō)明了這些請求。BM請求類(lèi)型布雷奎斯特WValue溫得克斯W長(cháng)度數據1000萬(wàn)B獲取狀態(tài)(0x00)零零二設備狀態(tài)0000萬(wàn)B清除功能(0x01)功能選擇器零零沒(méi)有0000萬(wàn)B設置功能(0x03)功能選擇器零零沒(méi)有0000萬(wàn)B設置地址(0x05)設備地址零零沒(méi)有1000萬(wàn)B獲取描述符(0x06)描述符類(lèi)型和索引零或語(yǔ)言ID描述符長(cháng)度描述符0000萬(wàn)B集合描述符(0x07)描述符類(lèi)型和索引零或語(yǔ)言ID描述符長(cháng)度描述符1000萬(wàn)B獲取配置(0x08)零零one配置值0000萬(wàn)B設置配置(0x09)配置值零零沒(méi)有

    • 這個(gè)獲取狀態(tài)針對設備的請求將在數據階段返回兩個(gè)字節,格式如下:,15號公路第14天第13天第12天第11天第10天第9天D8型D7型D6型D5型D4號D3D2號D1D0號保留遠程喚醒自供電如果設置了D0,則表示設備為自供電。如果清除,則設備為總線(xiàn)供電。如果設置了D1,則設備已啟用遠程喚醒,并且可以在掛起期間喚醒主機。遠程喚醒位可以通過(guò)SetFeature和ClearFeature請求,并使用DEVICE_remote_wakeup(0x01)的功能選擇器進(jìn)行

    • 清除特征設置功能請求可用于設置布爾特征。當指定的接收者是設備時(shí),只有兩個(gè)可用的功能選擇器是device_REMOTE_WAKEUP和TEST_MODE。測試模式允許設備顯示各種條件。這些在USB規范修訂版2.0中有進(jìn)一步的記錄。

    • 設置地址在枚舉期間用于為USB設備分配唯一地址。地址是用wValue指定的,最大只能是127。此請求的唯一性在于設備在完成狀態(tài)階段之后才設置其地址。(參見(jiàn)控制權轉讓)所有其他請求必須在狀態(tài)階段之前完成。

    • 設置描述符/獲取描述符用于返回wValue中的指定描述符。對配置描述符的請求將在一個(gè)請求中返回設備描述符以及所有接口和端點(diǎn)描述符。終結點(diǎn)描述符無(wú)法由GetDescriptor/SetDescriptor請求直接訪(fǎng)問(wèn)。接口描述符無(wú)法由GetDescriptor/SetDescriptor請求直接訪(fǎng)問(wèn)。字符串描述符在wIndex中包含一個(gè)語(yǔ)言ID,以支持多種語(yǔ)言。

    • 獲取配置/設置配置用于請求或設置當前設備配置。在Get配置請求的情況下,將在數據階段返回一個(gè)字節,指示設備狀態(tài)。零值表示設備未配置,非零值表示設備已配置。設置配置用于啟用設備。它應該包含所需的bConfigurationValue的值配置描述符在wValue的低字節中選擇要啟用的配置。

標準接口請求
  • 該規范目前定義了五個(gè)標準接口請求,詳細信息見(jiàn)下表。有趣的是,只有兩個(gè)請求可以做任何可以理解的事情。

BM請求類(lèi)型

布雷奎斯特

WValue

溫得克斯

W長(cháng)度

數據

1000 0001b

獲取狀態(tài)(0x00)

接口

接口狀態(tài)

0000 0001b號

清除功能(0x01)

功能選擇器

接口

沒(méi)有

0000 0001b號

設置功能(0x03)

功能選擇器

接口

沒(méi)有

1000 0001b

獲取接口(0x0A)

接口

備用接口

0000 0001b號

SET U接口(0x11)

替代設置

接口

沒(méi)有

  • 溫得克斯通常用于為指向接口的請求指定引用接口。其格式如下所示。15號公路第14天第13天第12天第11天第10天第9天D8型D7型D6型D5型D4號D3D2號D1D0號保留接口編號

  • 獲取狀態(tài)用于返回接口的狀態(tài)。對接口的這種請求應該返回兩個(gè)字節0x00、0x00。兩個(gè)字節都保留供將來(lái)使用

  • 清除特征設置功能請求可用于設置布爾特征。當指定的接收者是接口時(shí),當前的USB規范修訂版2沒(méi)有指定接口特性。

  • 獲取接口設置接口設置替代接口設置,在接口描述符 .

標準終結點(diǎn)請求
  • 標準端點(diǎn)請求有以下四種類(lèi)型。BM請求類(lèi)型布雷奎斯特WValue溫得克斯W長(cháng)度數據1000 0010b獲取狀態(tài)(0x00)零終結點(diǎn)二終結點(diǎn)狀態(tài)0000 0010b清除功能(0x01)功能選擇器終結點(diǎn)零沒(méi)有0000 0010b設置功能(0x03)功能選擇器終結點(diǎn)零沒(méi)有1000 0010b同步幀(0x12)零終結點(diǎn)二框架

    • 這個(gè) 溫得克斯字段通常用于指定指向端點(diǎn)的請求的引用端點(diǎn)和方向。其格式如下所示。15號公路第14天第13天第12天第11天第10天第9天D8型D7型D6型D5型D4號D3D2號D1D0號保留去吧保留終結點(diǎn)編號

    • 獲取狀態(tài)返回兩個(gè)字節,指示終結點(diǎn)的狀態(tài)(暫停/暫停)。返回的兩個(gè)字節的格式如下所示。15號公路第14天第13天第12天第11天第10天第9天D8型D7型D6型D5型D4號D3D2號D1D0號保留停止

    • 清除特征設置功能用于設置端點(diǎn)特征。該標準目前定義了一個(gè)端點(diǎn)特性選擇器endpoint_HALT(0x00),它允許主機暫停和清除一個(gè)端點(diǎn)。建議只有默認端點(diǎn)以外的端點(diǎn)具有此功能。

    • A 同步幀請求用于報告端點(diǎn)同步幀。


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: USB

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>