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

相关文章

通过Python脚本批量复制并规范命名视频文件

《通过Python脚本批量复制并规范命名视频文件》本文介绍了如何通过Python脚本批量复制并规范命名视频文件,实现自动补齐数字编号、保留原始文件、智能识别有效文件等功能,听过代码示例介绍的非常详细,... 目录一、问题场景:杂乱的视频文件名二、完整解决方案三、关键技术解析1. 智能路径处理2. 精准文件名

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

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报文通常包含以下部分: 地址域:单个字节,表示从站设备