Android + kernel USB host 如何判斷插入的設備是高速還是低速的設備

                  d+      d-    

                  0        0         PC

                  0        1         錯誤設備

                  1        0         非標準充電器

                  1        1          標準充電器

 

usb有主從設備之分,主設備有:pc,現在市面上的那些插u-disk即可播放mp3的“mp3”之類的,usb信號是差分信號,信號線爲D+, D-。 在usb host 端, D+,D-各接一個15kohm 的下拉電阻,而在usb device端,這時就有高速低速設備的區別了。usb1.0, 1.1,2.0協議中都有定義高低速設備以滿足不同情況的需求,這些在硬件上的區別就是:高速設備:d+接一個1.5kohm的上拉電阻,d-不接;低速設備則相反。

這樣當usb device插入到host中時,如果是高速設備,則d+被拉高,d-不變;低速設備則與之相反。這個上拉過程需要大概2.5us的時間,host這這個時間內便檢測到了該信號,即可判斷有device plug in,和該device的類型,然後開始通訊。

Usb充電器的D+,D-是短路的,因此可以通過檢測數據線的連接方式來判斷是usb充電還是usb傳數據。

USB OTG(on the go)就是既可以做host又可以做client,我們一般是作爲client接受pc傳輸數據,作爲host時可以接打印機直接把手機中的照片打印出來。判別是host還是client是靠USB_ID這根pin,當作爲client時,USB_ID基本是懸空的(內部有上拉),如果偵測到 USB_ID被拉低,就被認爲是作爲host,向外輸出,所以需要外部client設備把USB_ID拉低。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章