求問滑鼠是如何做到一插USB就安裝驅動的?我應該怎麼找這方面的資料?怎麼找USB上的電路圖? ?

專業性稍強


題主要點專業的東西,那我就上點專業的東西吧:

求問滑鼠是如何做到一插USB就安裝驅動的?

因為USB滑鼠是Class Specific設備,這種USB設備的驅動大部分都是通用的,所以凡是Class Specific設備,都可以用一份驅動搞定,滑鼠以插上去就能用,是因為Windows預先內置了這個Class的驅動,當然,不是所有USB設備都是Class Specific的,有很多都不是,比如USB無線網卡、USB轉串口,這些設備就需要廠商提供驅動才行。

USB鍵盤和滑鼠都屬於HID Class,ClassID是03,SubClassID是01,其中鍵盤的ProtocolID是01,滑鼠的ProtocolID是02.

想知道有哪些USB Class以及技術規範,需要訪問以下位置獲得文檔:

USB.org - USB Device Class Specifications

其中HID Class的:

USB.org - HID Tools

技術規範:

http://www.usb.org/developers/hidpage/HID1_11.pdf

全英文。

如果Windows沒有內置USB HID的Class驅動,那麼鍵盤滑鼠接上去就不能用,必須另外裝驅動才行。

同樣的,也可以想辦法把Windows里的USB HID驅動卸載,這樣鍵盤滑鼠也不能用了,在Linux里也可以做類似的事情。

在嵌入式開發中,需要單獨做鍵盤滑鼠驅動是很常見的事情。

你想獲得USB的電路圖,恐怕有困難。

USB電路中要有十分穩定的晶振等,你自己設計電路很麻煩,一般來說設備端的控制晶元都是批量生產做好的,很少有人單獨做,因為自己做電路的話,高頻信號很難保證。

一般來說USB鍵盤、滑鼠都是把鍵位、移動數據放到一個USB中斷傳輸里(跟CPU中斷不是一個概念),主機端採用polling的方式獲得設備狀態。

電路層面上,一般都是一個USB控制晶元搞定,滑鼠把狀態報給USB設備端的控制晶元,然後剩下的都是控制晶元完成的,各個廠商的控制晶元略有不同,比如羅技的是CP5919AM,一般都是廠商量產的。

如果做開發,那麼一般是用OTG做模擬,但這個開發成本極高,需要學習OTG相關的文檔:

USB.org - USB On-The-Go

當然了,一切的前提是要熟讀USB2.0基礎規範:

USB.org - USB 2.0 Documents

---------------------------------------------------------------

補充一下,如果題主要了解,設備一插上就能用,需要學習Windows驅動開發;

如果題主要了解USB,需要學習USB規範;

這兩個是不同的東西。


推薦閱讀:

滑鼠左鍵一點擊或者選定桌面文件就會顯示刪除這個文件是怎麼回事?
如何看待樂視宣稱自己引領了Type-C的潮流?
如何給樹莓派usb hub供電?
安卓手機充電介面為什麼會壞掉?
用 usb麥克風錄音會比用圓孔麥克風錄音效果更好嗎?有的說usb麥克風不受主板電氣信號干擾,那即使是usb麥克風它的線路最後不是也會進入主板嗎?

TAG:技術 | USB | 滑鼠 | 驅動程序 |