色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

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

          USB系列之第六章:USB請求

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

            • 沒有數(shù)據(jù)階段的標(biāo)準(zhǔn)設(shè)備請求必須在50ms內(nèi)完成。

            • 帶有數(shù)據(jù)階段的標(biāo)準(zhǔn)設(shè)備請求必須在請求500毫秒后開始返回?cái)?shù)據(jù)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          BM請求類型

          布雷奎斯特

          WValue

          溫得克斯

          W長度

          數(shù)據(jù)

          1000 0001b

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

          接口

          接口狀態(tài)

          0000 0001b號(hào)

          清除功能(0x01)

          功能選擇器

          接口

          沒有

          0000 0001b號(hào)

          設(shè)置功能(0x03)

          功能選擇器

          接口

          沒有

          1000 0001b

          獲取接口(0x0A)

          接口

          備用接口

          0000 0001b號(hào)

          SET U接口(0x11)

          替代設(shè)置

          接口

          沒有

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

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

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

          • 獲取接口設(shè)置接口設(shè)置替代接口設(shè)置,在接口描述符 .

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

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

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

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

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


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



          關(guān)鍵詞: USB

          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉