USB OTG规范的SRP和HNP协议

2024-05-27 11:58
文章标签 协议 usb 规范 otg srp hnp

本文主要是介绍USB OTG规范的SRP和HNP协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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设备请求开始会话的方式。被称为数据线脉冲调制(dataline 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设备在总线检测到SE0TA_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协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007413

相关文章

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

JavaEE7 Servlet 3.1(JSR 340)规范中文版

http://www.iteye.com/news/27727-jinnianshilongnian     Jave EE 7中的部分规范已正式获得批准通过,其中包括JSR340 Java Servlet 3.1规范,去年翻译了该规范,在此分享出来,希望对某些朋友有所帮助,不足之处请指正。   点击直接下载    在线版目录   Servlet3.1规范翻译

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接)  4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答  9.基于字节流 10.异常情况的处理 小结  前言 在前面,我们已经讲解了有关UDP协议的相关知识,但是在传输层,还有

Usb Audio Device Descriptor(10) Hid Device

对于 Standard Interface Descriptor, 当 bInterfaceClass=0x03时,即为HID设备。Standard Interface Descriptor如下 struct usb_standard_interface_descriptor{U8 bLength; /*Size of this descriptor in bytes*/U8 bDescrip