USB OTG (一)

 

 

1. 概要

OTG設備使用插頭中的ID引腳來區分A/B Device,ID接地被稱作爲A-Device,爲連接時候的USB Host,A-Device始終爲總線提供電力,ID懸空被稱作爲B-Device,爲連接時候的USB Device,設備的USB Host/USB Device角色可以通過HNP切換。

OTG設備連接時不能跨越USB Hub,如果跨越USB Hub則失去HNP功能。
這裏要注意A-Device/B-Device與USB Host/Device不是一回事 沒有必然的綁定關係A-Device就一定要是Host,A-Device只是連接時的Host可以通過HNP切換,切換完畢A-Device變成USB Device但是仍然爲總線提供電力。
2.設備類型

Embedded Host:提供標準的A插座,普通的USB Host並帶有TPL(支持設備列表)
OTG Device
:使用Micro AB插座,可以在運行時切換Host/Device。
僅外設B-Device:僅僅能作爲外設的B-Device(分爲插頭一體和插頭線纜分離的)。

注意:OTG Device在插頭插入後會先打開VBus,如果沒有設備連接則關閉VBus,並開啓ADP偵測,而Embedded Host則不會再次關閉VBus。
3.協議

#################  SRP(Session Request Protocol ) #################
B-Device
使用。通過數據線上的脈衝,請求A-Device打開VBUS並且開始一個Session。Session爲從VBUS打開到關閉這一段時間。

支持:A-Device允許迴應SRP,B-Device(包括僅能作爲外設的B-Device),允許發起SRP。一個能夠支持HNP的B- Device應該能夠發起SRP。當A插頭插入時關閉VBus的Host必須支持迴應SRP,VBus總是打開的Host不必響應SRP。

################# ADP(Attach Detection Protocol) ##################
提供設備檢測是否有對端設備插入。

支持:任何OTG設備,Embedded Host,支持SRP的B-Device允許ADP Probing,B-Device和僅能作爲外設的B-Device還必須支持ADP Senseing如果他們支持ADP Probing。

################  HNP(Host Negotiation Protocol) ###################
OTG
設備通過HNP來切換Host/Device角色。

當前的USB Host通過HNP Polling(類似Polling Hub)通過輪詢GetStatus()命令返回的數據中的Host request flag查詢對端設備是否請求變爲Host,Polling間隔爲1-2秒。
噹噹前的USB Host決定允許B-Device轉變爲Host以後通過SetFeature()打開b_hnp_enable,本次Session結束後Host回到A-Device手裏。
4.設備框架
OTG描述符
 
 
在設備枚舉時,A-Device通過GetDescriptor向B設備請求OTG描述符。OTG描述符也應當作爲GetConfiguration()的一部分返回。其中的bmAttributes標示B-Device是否支持ADP/HNP/SRP
標準設備特性,Host通過SetFeature()設置。

b_hnp_enable
設置此特性,顯示B-Device被允許進行HNP,A設備必須在T(HOST_REQ_SUSP)時間內掛起總線。

a_hnp_support
早期OTG版本的兼容特性,設置這個特性指示B-Device對端的A-Device支持HNP。A-Device應當對B-Device設置此特性如果A-Device支持HNP。

a_alt_hnp_support
廢棄

GetStatus()
其中數據部分OTG Status最低位爲Host Request flag,指示當期的USB Device角色期望變爲USB Host角色。

 
5.一般連接過程(Host -> Device
OTG Device /Embedded Host 與 僅作爲外設的B-device(帶A插頭型)

Host端檢測到A插頭插入,停止ADP,打開VBus,因爲B-Device的A插頭與設備作爲一體,此時B-Device必定與A插頭連接,Host檢測到外設連接,開始枚舉。
 
OTG Device/Embedded Host
與 僅作爲外設的B-device(A插頭爲線纜連接)

Host段檢測到A插頭插入,停止ADP,打開VBus,如果B-Device是線纜連接完畢在將A插頭

插入則整個連接過程與上面無異,因爲此時B-Device可能還沒有插入插頭,則設備連接超時,VBus再次關閉,等待下一次ADP的改變(線纜連接完畢),再次打開VBus,此時開始正常總 線枚舉。

OTG Device 與 OTG Device

Host端檢測到插頭插入,則打開VBus,如果沒有外設檢測到,則關閉VBus,打開ADP Probing,Device端檢測到插頭插入,則打開SRP,如果線纜沒有插入,則SRP超時,Device端開始進行ADP Probing,當線纜連接完畢,Device端偵測到ADP變化,發送SRP請求Host打開VBus,Host迴應SRP並且打開VBus,完成設備 連接。
6.OTG Device(Host/Device)與普通USB Host/Device

OTG Device(Device)插入普通USB Host:
SPEC指示OTG Device滿足所有USB外設條件,電器原理實現未查明。

普通USB設備插入OTG Device(Host):
OTG兼容,但是電器原理實現未查明,對VBus的打開,以及ADP和SRP的處理有疑問。在usb.org上有人問起這個問題,回覆只是講會識別並且兼容,但是實現原理及監測細節未知。

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