OTG 设备首先应该是符 合 USB2.0 规范的设备,此外它还具有以下特征 [1] :

1. 有限的主机性能

2. 像外围设备一样能进行全速操作(可选高速)

3. 像主机一样支持全速(可选低速和高速)

4. 可连接的外围设备清单(Targeted Periphral 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设备变为主机,并发送总线复位信号开始使用总线。


[1] 《USB-OTG芯片设计及其SystemC交易级验证》P30

USB OTG规范的SRP和HNP协议相关推荐

  1. SB OTG规范的SRP和HNP协议

    USB OTG规范的SRP和HNP协议 OTG设备首先应该是符合USB2.0规范的设备,此外它还具有以下特征[1]: 1. 有限的主机性能 2. 像外围设备一样能进行全速操作(可选高速) 3. 像主机 ...

  2. USB OTG 的进一步理解

    一直以来在做安卓系统相关的嵌入式通讯(USB.BLE.网络.串口等),最近在讨论 OTG 问题的时候,对该规范又重新理解了一次,这里仅做一些概要和核心点说明,下方会给出具体 OTG 包含协议的参考链接 ...

  3. USB OTG原理+ ID 检测原理

    OTG 检测的原理是: USB OTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG).USB OTG技术可实现没有主机时 ...

  4. otg usb 定位_详解USB OTG工作原理及其应用

    原标题:详解USB OTG工作原理及其应用 1994年,Intel,Compaq等七家软硬件全球知名企业为了突破当时PC使用串口和并口传输速度的限制,成立了通用串行 开发者论坛( Implemente ...

  5. USB OTG(On-The-Go)技术概述

    USB OTG(On-The-Go)技术概述[USB 2.0规范] 摘要:USB OTG(On-The-Go)是USB 2.0规范的补充,它使外设可以在无主机参与的情况下直接互连进行通信工程.本文讨论 ...

  6. USB otg 学习笔记

    1 USB OTG的工作原理 OTG补充规范对USB 2.0的最重要的扩展是其更具节能 性的电源管理和允许设备以主机和外设两种形式工作.OTG有两种设备类型:两用OTG设备(Dualrole devi ...

  7. 详述USB OTG发展及协议标准

    USB On-The-Go 扩大了USB 的应用领域,将USB 从传统的PC 与外设通讯的模式,扩展到移动电子和嵌入式领域中,抛开主机PC,实现通常的外设与外设之间点对点(Point to Point ...

  8. USB OTG简单介绍

    1 引言 随着USB2.0版本号的公布,USB越来越流行,已经成为一种标准接口.如今,USB支持三种传输速率:低速(1.5Mb/s).全速(12Mb/s)和快速(480Mb/s),四种传输类型:块传输 ...

  9. USB OTG的工作原理

    USB OTG的工作原理 OTG补充规范对USB 2.0的最重要的扩展是其更具节能性的电源管理和允许设备以主机和外设两种形式工作.OTG有两种设备类型:两用OTG设备(Dualrole device) ...

最新文章

  1. MFC中的CString.Format及CString,string,char*之间的转换
  2. 人生苦短,我用python+vscode
  3. Spring Workflow
  4. how to sell products on opensea
  5. bat脚本中获取上级目录_使用Python写一个可以监控Tomcat 运行的脚本,并且把.py文件转换成.exe文件...
  6. vue 全局函数的 定义与任意调用 (代码篇)
  7. 爬虫-请求类对象的创建-Request类
  8. stm32双向可控硅调压程序_双向可控硅的工作原理
  9. ajax数据显示,使用js通用模板
  10. 设计灵感|教会你海报设计套路
  11. 什么是9.png,如何制作,如何使用。
  12. dagger2 备注
  13. win+ubuntu系统引导修复
  14. Python之---【pandas】pd.concat(df)、df.append(df)
  15. mysql视图代码_mysql创建视图的实例代码
  16. 汽车行业如何玩转“Web3.0”?智己汽车“原石谷”开启区块链应用新场景!
  17. Java消息队列--ActiveMQ 实战
  18. AUTOCAD——文件管理
  19. 【Apache】配置.htaccess将主域名301重定向到www域名
  20. DIY背景美化生成器微信小程序源码

热门文章

  1. Educational Codeforces Round 118 (Rated for Div. 2) A-C
  2. 关于Javascript正则表达式替换
  3. 量子计算(6)pyqpanda编程1:量子程序与量子线路
  4. js插值计算_js插值-和js插值相关的内容-阿里云开发者社区
  5. 01——golang简介
  6. numpy中multiply函数怎么用
  7. iOS-UI之简易图表——饼图(扇形图)、柱状图、折(曲)线图
  8. GOOGLE招聘之行为准则
  9. 网页上传到服务器中文乱码问题
  10. mysql-front安装