USB裝置請求命令

來源:互聯網
上載者:User

  USB裝置的產品資訊和裝置的能力在USB的描述符中進行了定義。 當USB功能裝置串連到USB主機上後,USB主機通過標準的USB請求命令和USB功能裝置通訊,讀取USB描述符,從而獲得USB的功能裝置的產品資訊和功能配置,以便載入相應的USB驅動。

  標準的USB裝置請求命令是用在控制傳輸中的“初始設定步驟”裡的資料包階段(即DATA0,由八個位元組構成),標準USB裝置請求命令共有11個,大小都是8個位元組,具有相同的結構,由5 個欄位構成(欄位是標準請求命令的資料部分),結構如下(括弧中數字表示位元組數): bmRequestType(1)+bRequest(1)+wvalue(2)+wIndex(2)+wLength(2)   各欄位的意義如下:

1、bmRequestType:D7D6D5D4D3D2D1D0 D7=0主機到裝置 =1裝置到主機; D6D5=00標準請求命令 =01 類請求命令 =10使用者定義的命令 =11保留值 D4D3D2D1D0=00000 接收者為裝置 =00001 接收者為介面 =00010 接收者為端點 =00011 接收者為其他接收者 =其他 其他值保留

2、bRequest:請求命令代碼,在標準的USB命令中,每一個命令都定義了編號,編號的值就為欄位的值,編號與命令名稱如下(要注意這裡的命令代碼要與其他欄位結合使用,可以說命令代碼是標準請求命令代碼的核心,正是因為這些命令代碼而決定了11個USB標準請求命令):

 0) 0 GET_STATUS:用來返回特定接收者的狀態

 1) 1 CLEAR_FEATURE:用來清除或禁止接收者的某些特性

 2) 3 SET_FEATURE:用來啟用或啟用命令接收者的某些特性

 3) 5 SET_ADDRESS:用來給裝置分配地址

 4) 6 GET_DEscriptOR:用於主機擷取裝置的特定描述符

 5) 7 SET_DEscriptOR:修改裝置中有關的描述符,或者增加新的描述符

 6) 8 GET_CONFIGURATION:用於主機擷取裝置當前裝置的配置值(注同上面的不同)

 7) 9 SET_CONFIGURATION:用於主機指示裝置採用的要求的配置

 8) 10 GET_INTERFACE:用於擷取當前某個介面描述符編號

 9) 11 SET_INTERFACE:用於主機要求裝置用某個描述符來描述介面

10) 12 SYNCH_FRAME:用於裝置設定和報告一個端點的同步幀

  USB主機發送SETUPDAT 資料包,USB功能裝置將其進行解碼,獲得USB主機的裝置請求。然後USB韌體程式調用相應的響應函數對USB主機請求進行響應。典型的USB裝置請求響應程式碼使用switch-case語句對不同的請求碼(如用SETUPDAT[1]表示)進行分析,分別進行響應。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.