USB OTG学习笔记

本文是查阅相关资料学习了半天的心得,记录下来防止忘记,不正确之处望指正。
OTG 是On-The-Go的缩写,是为了USB设备身份主从互换而引入的。

为了支持OTG,改动部分包括如下:
1.接口修改,增加了另外一条ID线
2.增加了额外的协议,ADP,SRP,HNP

一个既支持主又支持从的USB设备,软件协议栈应包含如下部分:

  1. host controler driver
  2. host side device driver
  3. Gadget device driver

当USB作为主设备时:
host side device driver<------>host controler driver

当USB作为从设备时:
Gadget device driver<---->host controler driver

ID线仅仅是作为初始时是主设备还是从设备起作用。

主从身份互换通过HNP协议完成
Host Negotiation Protocol
(A) A设备使用完总线并停止所有总线活动(即挂起总线)。

(B) B设备检测到总线空闲超过TB_AIDL_BDIS,断开D+数据上的上拉启动HNP。这使总线放电为SEO状态。

© 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设备变为主机,并发送总线复位信号开始使用总线。

注意HNP不能跨越hub,因此OTG身份切换只能两台设备之间之间相连。

参考资料:
https://en.wikipedia.org/wiki/USB_On-The-Go
http://www.voidcn.com/article/p-fwkznznl-bkv.html

发布了85 篇原创文章 · 获赞 26 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/whuzm08/article/details/88715474