OTG设备首先应该是符合USB2.0规范的设备,此外它还具有以下特征[1]:
1. 有限的主机性能
2. 像外围设备一样能进行全速操作(可选高速)
3. 像主机一样支持全速(可选低速和高速)
4. 可连接的外围设备清单(TargetedPeriphral List)
5. 会话请求协议SRP
6. 主机交换协议HNP
7. 只有一个Mini-AB插座
8. VBUS的输出电流最小是8mA
9. 向用户传递消息的方法
SRP
1. 介绍
为了节约电源,在不使用总线时OTG规范允许A设备关断Vbus。如果B设备在Vbus关断时需要使用总线,那么它可以用某些方法请求A设备在Vbus上提供电源。因此OTG规范定义了会话请求协议。
会话被定义为Vbus高于给定设备的会话有效阈值的一段时间。
当Vbus下降至低于A设备的会话有效阈值后,会话结束。双角色设备要求能初始化并响应SRP。所有A设备,包括PC,都可以响应SRP。所有B设备,包括标准的USB外围设备,都可以初始化SRP。
OTG规范定义了B设备向A设备请求开始会话的方式。被称为数据线脉冲调制(data—line pulsing)。
2. 初始条件
B设备在确定A设备己检测到前一次会话结束后才能尝试启动新的会话。A设备通过检测Vbus下降到低于其会话有效阈值(VOTG_SESS_VLD)来确定会话结束。等待时间: TB_SSEND_SRP。
启动新的会话的第二个初始条件是B设备必须检测到D+和D一数据线在至少TB_SE0_SRP的时间内为低电平(SEO)。这能确保A设备检测到设备的断开连接情况。
3. 数据线脉冲调制
要用数据线脉冲调制SRP请求新的会话,B设备必须等待,直到符合上面所述的初始条件,并接入了其数据线上拉电阻(D+或D一线)保持时间TB_DATA_PLS。
被设计为检测SRP数据线脉冲调制的A设备应在D+或D一线变高电平时产生一个SRP指示。
4. B-device Session Valid
当B设备检测到Vbus高于会话有效阈值(VOTG_SESS_VLD)之后,B设备认为当前正进行会话。B设备需要在Vbus超过VOTG_SESS_VLD后,在最多TB_SVLD_BCON时间内使得D+或D-有效。
5. A设备的反应时间
在初始化SRP之后,B设备需要等待A设备的响应,至少等待TB_SRP_FAIL。
6. SRP的初始化
Host Negotiation Protocol
(A) A设备使用完总线并停止所有总线活动(即挂起总线)。
(B) B设备检测到总线空闲超过TB_AIDL_BDIS,断开D+数据上的上拉启动HNP。这使总线放电为SEO状态。
(C) A设备在总线上检测到SE0,而且认为这是B设备要成为主机的请求。A设备在总线检测到SE0的TA_BDIS_ACON时间内连接其D+线上拉电阻作为响应。
(D) 在等待了足够长时间确保D+线由于B设备上拉的剩余效应不能为高电平后,B设备发现D+线是高电平D一线是低电平(即J状态)。这表示A识别出来自B设备的HNP请求。此时,B设备成为主机,而且发送总线复位信号开始使用总线。B设备必须在A设备连接了其上拉电阻的TB_ACON_DBNC时间内发送总线复位信号(SE0)。
(E) 当B设备使用完总线后,它停止所有总线活动(B设备可以选择在总线上检测到全速空闲情况时连接其D+线上拉电阻)。
(F) 设备在超过TA_BIDL_ADIS的时间内没有检测到总线活动就会断开其D+线上拉电阻。另外,如果A设备不再需要与B设备通信,A设备可能会关断Vbus并结束会话。
(G) 设备连接其上拉电阻。
(H) 待了足够长的时间(TLDIS_DSCHG)确保D+线由于A设备上拉的剩余效应不为高电平后,A设备发现D+线是高电平(D一线是低电平),表示B设备正在发送连接信号并准备作为外围设备响应。此时,A设备变为主机,并发送总线复位信号开始使用总线。
|