USB OTG插入檢測識別

轉載請標註原文地址:http://blog.csdn.net/uranus_wm/article/details/9838847windows

 

一 USB引腳通常四根線,定義以下:函數


爲支持OTG功能,mini/micro usb接口擴展了一個ID引腳(第4腳)ui

A設備端ID腳接地,則初始狀態爲Host,例如PC和支持OTG設備作主設備時.net

B設備端ID腳懸空,默認上拉爲高電平,則初始狀態爲Device,例如U盤和支持OTG設備作從設備時
線程

1. 移動設備如需支持OTG,內部ID引腳須要默認上拉爲高3d

2. VBUS是輸入輸出雙向引腳。對於Device是power supply輸入腳;對於Host須要串一個5V電源輸出給device。blog


二 USB插入檢測過程,看下面一個簡單電路,Samsung Exynos4412平臺:接口


電路描述:CON1爲micro usb鏈接器,VBUS鏈接系統XuotgVBUS腳,同時提供一箇中斷輸出腳到XEINT28ci

同時外部一個DC5V通過控制芯片也輸出到XuotgVBUS,做爲host時須要用到給外部供電get

ID腳上拉1.8V做爲Host/Slave檢測,同時提供另外一箇中斷輸入腳到XEINT29

 

該設備支持OTG,下面說下設備的發現過程:

做爲從設備插入PC端口時:

1.  系統檢測到VBUS上的XEINT28上升沿觸發中斷,由於PC端會有一個5V從VBUS給過來,進入中斷處理函數進一步確認ID腳狀態,ID腳爲低則狀態錯誤,ID腳爲高表示設備應該切換到從設備模式

2. 通知usb gadget使能vbus,按照device模式使能PHY。gadget在probe時註冊了一個SPI軟中斷IRQ_USB_HSOTG,用於響應數據接收

3. 開啓usb clk,使能PHY,此時外部5V電源供給系統XuotgVBUS,gadget收到IRQ_USB_HSOTG中斷要求重啓OTG core

4. USB DP(高速設備爲DP,低速設備爲DM)上產生一個高電平脈衝,此時PC識別到一個USB設備插入,windows會提示用戶

5. 後續就是SETUP,GET DISCRIPTOR的過程

 

做爲主設備發現設備插入時:

1. 系統檢測到ID腳上XEINT29降低沿觸發中斷(實際是插入的usb公口第四腳直接鏈接到第五腳地上面),進入中斷處理,切換到主設備模式

2. 關中斷,使能DC5V給VBUS上電,喚醒ehci與ohci

3. usb core在內核初始化時註冊了一個名爲khubd的內核線程,由khubd監控port event。(實際過程我理解是從設別由VUBS供電後,會在DP或DM上產生一個高電平脈衝

ehci在接收到脈衝信號後識別到設備插入,僅僅是理解,這一點未驗證)

3. khubd獲取port,speed後交給ehci,接下來就是usb的SETUP,GET DISCRIPTOR過程

相關文章
相關標籤/搜索