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变成USB从设备,但是仍然为总线供电。

2.USB-OTG插槽类型

As Host Only :提供标准的A插座,普通的USB Host并带有TPL(支持设备列表)

As Device Only:仅能作为外设的B-Device(分为插头一体和插头线缆分离的)

OTG Dual      :使用Micro AB插座,可以在运行时切换Host/Device。

  OTG Dual  在插头插入后会先打开VBus,如果没有设备连接则关闭VBus,并开启ADP侦测,而EAs Host Only 则   不会再次关闭VBus
   3.协议
   SRP(Session Request Protocol)对话请求协议:       SRP协议允许Adevice在总线为使用时通过切断VBUS来节省电源消耗,任何一类Adevice都应该能够响应SRP请求,任何Bdevice也应该能够发起SRP请求,

    ADP(Attach Detection Protocol):         提供是否有对端设备插入的检测,支持任何OTG设备   

     HNP(Host Negotiation Protocol)主机交换协议:           OTG 设备通过HNP来切换Host/Device角色,Adevice通过查询Bdevice的OTG性能描述符来判断是否支持HNP协议,以判断 Bdevice是否为两用的OTG设备,如果Bdevice支持HNP协议,Bdevice将会返回有效的OTG性能描述符,随后Adevice产生一个 SetFeature命令告知Bdevice:你可以在总线挂起时以主机的方式工作,Adevice发送了这个SetFeature命令后挂起总线,      本次Session结束后Host回到Adevice手里。    
   4.设备框架
   OTG描述符
   在设备枚举时,A-Device通过GetDeor向B设备请求OTG描述符。OTG描述符也应当作为GetConfiguration()的一部分返回。其中的bmAttributes标示B-Device是否支持ADP/HNP/SRP

    标准设备特性,通过SetFeature()设置。   
    b_hnp_enable         设置此特性,显示B-Device被允许进行HNP,A设备必须在T(HOST_REQ_SUSP)时间内挂起总线,此特性在session结束时清除。   
    a_hnp_support   
    早期OTG版本的兼容特性,设置这个特性指示B-Device对端的A-Device支持HNP。   
    a_alt_hnp_support         该标志已被废弃   

     5.连接方式(Host -> Device)    
     As Host Only 与 仅作为外设的B-device(带A插头型)    
     Host端检测到A插头插入,停止ADP,打开VBus,因为B-Device的A插头与设备作为一体,此时B-Device必定与A插头连接,Host检测到外设连接,开始枚举。           As Host Only 与 仅作为外设的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 mrio AB插座不能识别U盘,最后查出的原因是客户样机的USB的ID脚没有接地,
  样机没有切换到USB HOST模式。

OTG_FS_ID功能及引申的更多相关文章

  1. Flash动画

    Flash (交互式矢量图和Web动画标准) Flash是由macromedia公司推出的交互式矢量图和 Web 动画的标准,由Adobe公 司收购.做Flash动画的人被称之为闪客.网页设计者使用 ...

  2. 如何进行服务器的批量管理以及python 的paramiko的模块

    最近对公司的通道机账号进行改造管理,全面的更加深入的理解了公司账号管理的架构.(注:基本上所有的机器上的ssh不能使用,只有部分机器能够使用.为了安全的角度考虑,安装的不是公版的ssh,而都是定制版的 ...

  3. C++编程思想重点笔记(下)

    上篇请看:C++编程思想重点笔记(上) 宏的好处与坏处 宏的好处:#与##的使用 三个有用的特征:字符串定义.字符串串联和标志粘贴. 字符串定义的完成是用#指示,它容许设一个标识符并把它转化为字符串, ...

  4. Python基础-使用paramiko

    一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...

  5. 读书笔记(02) - 可维护性 - JavaScript高级程序设计

    编写可维护性代码 可维护的代码遵循原则: 可理解性 (方便他人理解) 直观性 (一眼明了) 可适应性 (数据变化无需重写方法) 可扩展性 (应对未来需求扩展,要求较高) 可调试性 (错误处理方便定位) ...

  6. Spring Cloud 入门 之 Config 篇(六)

    原文地址:Spring Cloud 入门 之 Config 篇(六) 博客地址:http://www.extlight.com 一.前言 随着业务的扩展,为了方便开发和维护项目,我们通常会将大项目拆分 ...

  7. python远程登录服务器(paramiko模块安装和使用)

    转自:http://www.jb51.net/article/46285.htm 一:简介 由paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器 ...

  8. python的paramiko模块的安装与使用

    一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...

  9. 【SpringBoot】SpringBoot的基础,全面理解bean的生命周期

    前言 前段时间直接上手使用springboot开发了一个数据平台的后台部分,但是自身对于springboot的原理和过程还不是很清晰,所以反过来学习下springboot的基础. 大家都知道sprin ...

随机推荐

  1. HTML5文档结构语义:页眉的header和hgroup标签使用

    HTML5提供了新的结构元素——例如header.hgroup.article.section.footer.nav等来定义网页,将使网页结构更加简洁严谨,语义更加结构化,而不用迂回通过class或i ...

  2. SSIS -->> Variable

    变量的特点: 1)大小写敏感 2)可见范围限制,里层可以看到外层,外层看不到里层的: 在属性窗口开启EvaluateAsExpression选项可以支持expression动态赋值变量

  3. ARM处理器的寄存器,ARM与Thumb状态,7中运行模式 【转】

    转自:http://blog.chinaunix.net/uid-28458801-id-3494646.html ARM处理器工作模式一共有 7 种 : USR  模式    正常用户模式,程序正常 ...

  4. Oracle INV - SO line backorder API

    --Sales Order Lines to backorder API--===================================--SET serveroutput on size ...

  5. Java关键字static、final

    static  1. static变量     按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量.两者的 ...

  6. R语言多重共现性的检测

    1.kappa值 2. library(car)vif(lm.sol) 得到各个系数的方差膨胀因子,当0<VIF<10的时候,不存在多重共线性,当10<=VIF<100,存在较 ...

  7. POJ 3693 (后缀数组) Maximum repetition substring

    找重复次数最多的字串,如果有多解,要求字典序最小. 我也是跟着罗穗骞菊苣的论文才刷这道题的. 首先还是枚举一个循环节的长度L,如果它出现两次的话,一定会包含s[0], s[L], s[2L]这些相邻两 ...

  8. splay入门

    在比较了网上的几份模板的速度之后,发现指针版明显快了很多,但是一敲起来....各种不习惯...所以还是学的hzwer 的数组版... bzoj3223:维护reverse操作就可以了 #include ...

  9. Storm中tuple的可靠性

    一.简介 Storm 可以保证 spout 发出的每条消息都能被“完全处理” ,这也是直接区别于其他实时系统的地方,如 S4. 请注意,spout 发出的消息后续可能会触发产生成千上万条消息 ,可以形 ...

  10. Java笔记之数组

    1.int flags[] = new int[10];数组中的每个元素初始化为0. Arrays.fill(flags, 0);将数组中每个元素置为0.