• 欢迎访问伊栖物联网社区,聚焦物联网技术和解决方案QQ群:735553309
  • ,从传感器到片上嵌入式系统,无线接入,边缘计算,在这里您可以讨论一切
  • 参加最新的物联网研讨会报名
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏伊栖Eccee

USB-OTG模式详解

片上系统 Robin TU 3年前 (2021-09-06) 4289次浏览 0个评论

何谓USB OTG?

一切得先从USB的历史说起,从1996年USBID正式提出USB 1.0标准以来,USB标准经过数次演化。目前工业上常见的USB标准主要是基于1998年制定的USB 1.1标准并在后来成为USB 2.0的全速(Full-speed)版本,理论传输速度为12 Mbps,即1.5 MB/s,以及2000年制定的真正的USB 2.0,被称为USB 2.0的高速(High-speed)版本,理论传输速度为480 Mbps,即60 MB/s,但实际传输速度一般不超过30 MB/s。近年出现的USB 3.0/3.1则实现超高速的传输。

USB OTG标准在完全兼容USB2.0标准的基础上,2001年12月18日由USB Implementers Forum公布,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG)。OTG是USB2.O版本的补充,并不是独立的标准,它保留了USB2.0的所有特点。

USB HOST/DEVICE/OTG概念

USB设备分为HOST(主设备)和SLAVE(从设备,也称Peripheral),只有当一台HOST与一台SLAVE连接时才能实现数据的传输。而USB OTG设备既能做主机,又能做设备。OTG技术就是实现在没有Host的情况下,实现从设备间的数据传送。当OTG插到电脑上时,OTG的角色就是连接电脑的Peripheral device(比如读卡器),而当USB/SD device插到OTG上,OTG的角色就是HOST(主机),有些手机也经常用到OTG功能。

OTG控制器可以做host,也能做Peripheral device,控制器的角色一般由USB ID电平来决定。在OTG功能中一般用到5 Pin的Mini USB或Micro-USB接口,引脚定义如下:


1:VCC
2:D-
3:D+
4:id
5:GND
其中ID引脚的功能用于区分是Host还是Peripheral:

  • ID连接到GND: Host
  • ID不连接(浮动): Peripheral

这个ID线只有对OTG才有用,可用电缆的连接方式来决定初始角色。在OTG中,初始主机设备称为A设备,外设称为B设备。mini-A插头中的ID引脚接地,mini-B插头中的ID引脚浮空。支持OTG功能的两用设备使用mini-AB插座,接收并监测此ID信号。系统控制器会根据ID脚的电平判断是什么样的设备插入,如果是高电平,则是mini-B接头插入,此时系统就做主模式(master mode)。如果ID为低,则是mini-A接口插入,然后系统就会使用HNP对话协议来决定哪个做Master,哪个做slave。

完整的USB2.0 OTG 控制器硬件信号如下:

USB_ID是个输入信号,由 USB OTG 协议定义,用于识别 USB 口所接设备的默认角色(host or device)。USB_ID 默认上拉,处于 device 状况,如果要控制器进入 host 状态,需外接 mini-A 口或 micro-A 口将 USB_ID 短接到地。也可以由软件进行强制切换。一般OTG设备使用插头中的ID引脚来区分A/B Device,Micro-A插头,USB_ID接地被称作为A-Device,为连接时候的USB Host,A-Device始终为总线提供电力;Micro-B插头,USB_ID悬空被称作为B-Device,为连接时候的从设备,设备的USB Host/USB Device角色可以通过HNP切换。

OTG的工作原理

1.1主机(Adevice)和从机(Bdevice)的初始功能
设备的初始功能是通过定义连接器来实现的。OTG定义了一个 叫做MiniAB的袖珍插孔,他能直接接入MiniA或者MiniB插口,MiniAB有一个ID引脚上拉至电源端,MiniA插头有一个与地连接好的 ID(R<10 Ω),Mini B插头有一个与地连接的开路ID引脚(R>100 kΩ)。当2个OTG设备连接到一起的时 候 ,MiniA插头边的ID引脚会注入一个”0″状态,MiniB插头边的ID引脚为 “1”,ID为0的OTG设备默认为主机 (Adevice),ID为1的OTG设备默认为从机(B device)。
1.2 对话请求协议SRP(Session Request Protocol)
这个协议允许Adevice(可以是电池供电)在总线未使用 时通过切断Vbus来节省电源消耗,也为Bdevice启动总线活动提供了一种方法。任何一个Adevice, 包括PC或便携式电脑,都可以响应 SRP;任何一个Bdevice,包括一个标准USB外设, 都可以启动SRP;要求一个双重功能设备既能启动SRP,又能响应SRP。
在以往的USB系统运行过程中,主机提供5V的电源和不低于100mA的总线电流。当OTG 主机(指以主机方式工作的两用OTG设备,又称A-device)连接到有线电源时这种方法是适用的,但像手机这样的自供电移动设备则不能承受如此大的电 能浪费。为了节约电源延长电池的使用寿命,当总线上没有活动时,OTG主机将挂起总线电源VBUS。SRP协议可使OTG从机(指外设式设备或者以外设方 式工作的两用设备,又称Bdevice,此处指后者)请求A-device重新使能VBUS,而后A-device使用HNP协议交换两个设备的工作方式,这两步完成后由新的OTG主机开始事务传输。B-device可在前一事务结束2ms后的任意时间开始SRP,SRP的时序波形见图形1。
B-device将先后执行数据线脉冲调制(data-line pul-sing)和VBUS脉冲调制(VBUS pulsing) 。它通过使能数据线上拉电阻(全速和高速设备为D+,低速设备为D-)5~10ms实现前者,后者通过驱动VBUS实现。
VBUS必须要有足够长的时间对 其电容充电,这个时间应能保证不大于13μF的电容充电至2.1V(OTG设备的电容是6.5μF或更小),从而不会对标准主机的96μF或更高的电容充 电至2.0V。该限制保证了从Bdevice引来的VBUS电流不会破坏标准主机的端口。
A-device检测到数据线脉冲调制或者VBUS脉冲调制后,首先复位总线,然后发送 Set_feature命令而先不进行设备的枚举,此时B-device尚处在默认的从机状态。如果Set_feature命令成功执行,说明B- device为两用OTG设备,A-device(使用HNP协议)挂起VBUS准备让B-device交换为主机方式接管总线。如果 Set_feature命令执行失败,说明B-device为外设式OTG设备,于是A-device使能VBUS准备开始一个传输事务(此时,A- device只是被唤醒,并未改变工作方式)。当Adevice认为总线上没有传输需要时,挂起VBUS以结束该事务。这种A-device自动检测 B-device是否支持HNP协议的特征称为”No Silent Failure”。
1.3 主机流通协议HNP(Host Negotiation Protocol)
当两用设备连接了一个Mini-A插头或者Mini-B插头时,它相应的便以OTG主机或者OTG外设的默认方式工作。A-device为默认主机,所以由它提供VBUS电源,且在检测到有设备接入时复位总线、枚举并配置B-device。
A-device在完成对B-device的使用后,可以通过查询B-device的 OTG性能描述符来判断是否支持HNP协议(即是否为两用OTG设备)。如支持HNP,B-device将返回有效的OTG性能描述符,Adevice则产生一个Set_feature命令(即HNP_Enable)来通知B-device可以在总线挂起的时候以主机方式工作,随后A-device挂起总线。
B-device通过上拉电阻(全速时)或者下拉电阻(高速时)拉低D+以示连接断开。随 后,作为对Bdevice断开的响应,A-device使能它的数据线并开始以从机方式工作。完成这些转换后,B-device和Adevice便各自以主机角色和外设角色使用总线。如果该B-device属于两用OTG设备且A-device不再使用它了,A-device便重发 Set_feature命令并挂起总线。若B-device申请角色转换时出错,A-device则拉低VBUS以结束该事务。当B-device正常结 束传输事务时便挂起VBUS使能其上拉电阻,重新以从机方式运行。A-device检测到总线挂起后,发出一个连接断开信号并重新以主机方式工作。
当两用设备连接了一个Mini-A插头或者Mini-B插头时,它相应的便以OTG主机或者OTG外设的默认方式工作。A-device为默认主机,所以由它提供VBUS电源,且在检测到有设备接入时复位总线、八举并配置B-device。
A-device在完成对B-device的使用后,可以通过查询B-device的OTG 性能描述符来判断是否支持HNP协议(即是否为两用OTG设备)。如支持HNP,B-device将返回有效的OTG性能描述符,A-device则产生一个Set_feature命令(即HNP_Enable)来通知B-device可以在总线挂起的时候以主机方式工作,随后Adevice挂起总线。 HNP的时序波形见图2。
B-device通过上拉电阻(全速时)或者下拉电阻(高速时)拉低D+以示连接断开。随 后,作为对B-device断开的响应,A-device使能它的数据线并开始以从机方式工作。完成这些转换后,B-device和A-device便各自以主机角色和外设角色使用总线。如果该B-device属于两用OTG设备且A-device不再使用它了,Adevice便重发 Set_feature命令并挂起总线。若B-device申请角色转换时出错,A-device则拉低VBUS以结束该事务。当B-device正常结 束传输事务时便挂起VBUS使能其上拉电阻,重新以从机方式运行。Adevice检测到总线挂起后,发出一个连接断开信号并重新以主机方式工作。
HNP是一种用来实现Adevice和Bdevice主机/从机转换的协议(实际上是电缆的反转)。
主/从机功能交换的结果表现在下列过程中:
(1)利用上拉电阻来发送信号给从机。
(2)Adevice可在Bdevice上设置”HNP Enable”特性。
(3)Bdevice断开上拉。
(4)ADevice与上拉电阻相连,表明Adevice从属于从机。
(5)Adevice给Vbus供电。
(6)Bdevice检测Adevice的上拉。
(7)复位/列举/使用Adevice。
OTG描述符
在枚举阶段,OTG A-device将会从B-device请求OTG配置描述符。此三字节描述符由三部分组成:bLength, bDescriptorType, 和bmAttributes,位定义如下图所示。
srp_support
如果设备支持SRP,则这一位设置为TRUE。
hnp_support
如果设备支持HNP,则这位设置为TRUE。
Set Feature Commands
A-device会使用SetFeature 命令使能B-device的特点行为,或表明A-device到B-device的特定能力。
b_hnp_enable
设置此特性表明B-device已经能够执行HNP。
此特性仅在总线复位或会话结束时清除,不能通过ClearFeature(b_hnp_enable) 命令清除。
a_hnp_support
设置此特性表明B-device连接的A-device端口支持HNP。A-device会在会话开始,任意B-device配置被选择之前设置此特性。
a_alt_hnp_support
设置此特性表明B-device连接的A-device端口没有HNP功能,但是此A-device 有备用的端口具备HNP功能。此特性仅在总线复位或会话结束时清除,不能通过ClearFeature(b_hnp_enable) 命令清除。


ECCEE版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:USB-OTG模式详解
喜欢 (4)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址