USB通訊協議學習筆記

2021-10-04 10:21:38 字數 2569 閱讀 3372

usb學習筆記

usb hid裝置類的應用場合

usb hid類是usb裝置的乙個標準裝置類,包括的裝置非常多。hid類裝置定義它屬於人機互動操作的裝置,用於控制計算機操作的一些方面,如usb滑鼠、usb鍵盤、usb遊戲操縱桿等。但hid裝置類不一定要有人機介面,只要符合hid類別規範的裝置都是hid裝置。

usb hid裝置的乙個好處就是作業系統自帶了hid類的驅動程式,而使用者無需去開發驅動程式,只要使用api系統呼叫即可完成通訊。

usb hid裝置類的通訊管道

所有的hid裝置通過usb的控制管道(預設管道,即端點0)和中斷管道(端點1或端點2)與主機進行通訊。

管道        要求      說明

控制(端點0)    必須      傳輸usb描述符、類請求**以及供查詢的訊息資料

中斷輸入      必須      傳輸從裝置到主機的輸入資料

中斷輸出      可選      傳輸從主機到裝置的輸出資料

注:usb主機為pc,usb裝置如滑鼠等。

控制管道主要用於下面3個方面:

接收/響應usb主機的控制請求以及相關的類資料

在usb主機查詢時傳輸資料(如響應get_report請求等)

接收usb主機的資料

中斷管道主要用於下面兩個方面:

usb主機接收usb裝置的非同步傳輸資料

usb主機傳送有實時性要求的資料給usb裝置

從usb主機到usb裝置的中斷輸出資料傳輸是可選的,當不支援中斷輸出資料時,usb主機通過控制管道將資料傳輸給usb裝置。

裝置的掛起:

關於host usb如何掛載的說明:

usb協議的第9章講到usb可見裝置狀態[universal serial bus specification, section 9.1.1, pg 239],分為連線(attached),上電(powered),預設(default),位址(address),配置(configured)和掛起(suspended)6個狀態。所謂可見,即usb系統和主機可見的狀態,其他狀態屬於usb裝置內部而不可見。其中有關電源的,大致可分下面三類:

連線狀態(attached):裝置連線,但未提供電源。

我們知道,在usb系統中,正常狀態下hub或root hub會一直周期性地傳送sof包(start of frame,全速usb每1ms傳送乙個,高速usb則是125µs傳送乙個)。根據usb協議,如果usb線上一直處於空閒(idle)狀態超過3ms,裝置應該把它當作乙個掛起(suspended)訊號,要求裝置在10ms內進入掛起狀態,並把裝置所需的電流大小降到規定的值(對於low-power裝置,要求是500 µa,而對於high-power或支援遠端喚醒(remote wakeup)功能的裝置是2.5ma【section 7.2.3, pg176】)。在掛起狀態中,裝置必須繼續向資料項d+/d-的上拉電阻提供電壓以維持idle狀態。而對於usb2.0高速裝置,還有些額外的要求:

高速裝置在收到掛起訊號(3ms空閒)後,應在0.125ms內切換到全速狀態,也就是說要把終端電阻移除,並在d+資料線上重新掛上1.5k上拉電阻。

裝置在隨後的100-875µs內檢測資料線上的狀態。如果該狀態是乙個full speed j,那麼說明host發下來的是乙個掛起訊號;如果此時該狀態是se0,說明是host drive資料線d+到0,這是乙個復位訊號(復位訊號會持續至少10ms時間)。

要注意的是高速裝置在掛起狀態時處於高速模式,只是所用的是全速訊號。一旦從掛起狀態恢復回來,會馬上進入高速工作狀態而無需進行復位操作。

usb high speed suspend signal

如上圖所示,host在a點停止傳送sof,系統處於se0狀態,b點是3ms時間點,之後的125µs內,裝置移除終端電阻,並掛上1.5k上拉。此時如host傳送的是suspend訊號,那它就不會不drive d+資料線,導致d+被裝置拉高,形成乙個full speed j狀態。在c點之後100-875µs內裝置檢測此時host行為,發現是suspend訊號,裝置內部進入低功耗的掛起(suspend)狀態。(假如hsot傳送的是復位訊號,那麼當裝置在c點掛1.5k電阻之後,由於host對d+線的drive作用,d+線無法被拉高,仍然處於se0狀態,裝置在c點之後的檢測,發現的還是se0狀態,等到10ms後就可判斷這是乙個復位訊號,進行裝置復位操作。)

裝置的喚醒

裝置處於掛起狀態時,任何匯流排上的活動(非空閒訊號)都可以把裝置喚醒/恢復,從而退出低功耗模式。(同樣,裝置也可以換醒host,比如電腦待機時通過usb鍵盤來換醒主機,這種功能稱之為「遠端喚醒」(remote wakeup),不在本文的討論範圍內。)

因為裝置掛起時處於全速訊號,在當host需要把將裝置退出suspend狀態時,需要先傳送乙個持續時間超過20ms的fulll speed k狀態。裝置看到k狀態結束的1.3us內醒過來,而host需要在3ms內傳送usof訊號以維持正常的高速訊號模式,否則裝置又將進入suspend。如下圖所示:

USB通訊協議

usb2.0最高傳輸速度可達480mb s。一 四種傳輸方式 a 控制傳輸方式 配置和控制主機到usb裝置的資料傳輸方式和型別。b 中斷傳輸方式 資料量小,需被及時處理,實時性好,主要用於鍵盤 滑鼠等。c 同步 等時傳輸方式 用於連線需要連續傳輸資料且對資料正確性要求不高,而對時間極為敏感的外部裝置...

USB滑鼠通訊協議格式

宣告 本文原出處 作者文章。滑鼠傳送給pc的資料每次4個位元組 byte1 byte2 byte3 byte4 定義分別是 byte1 bit7 1 表示 y 座標的變化量超出 256 255的範圍,0表示沒有溢位 bit6 1 表示 x 座標的變化量超出 256 255的範圍,0表示沒有溢位 bi...

USB通訊協議 資料傳輸

usb2.0通訊協議 spalish 1.包 packet 包是usb系統中資訊傳輸的基本單元,所有資料都是經過打包後在匯流排上傳輸的。usb包由五部分組成,同步字段 sync 包識別符號 pid 資料字段 crc和包結尾字段 eop 包型別 由pid區分 令牌 out in sof setup 資...