usb-OTG-ADP-HNP-SRP

本文深入探讨了USB技术的速率分类及其发展,包括USB1.0、USB1.1、USB2.0和USB3.0的速率特性。同时详细解释了USB OTG的工作原理,涉及ADP、HNP和SRP三个关键协议,以及USB设备在不同场景下主从角色的切换机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. USB速率

这得从USB的发展过程说起。 
USB 1.0:最早的USB标准,有187.5Kbps和1.5Mbps两种传输速率,最高传输速率1.5Mbps 
USB 1.1:传输速率为USB 1.0标准的8倍,有1.5Mbps和12Mbps两种传输速率,最高速率12Mbps 
USB 2.0:较新的USB标准,最高传输速率为480Mbps 
USB 3.0:据说是最新的USB标准,最高传输速率为4.8Gbps(还没见过这种设备) 
可能是出于兼容性方面的原因,USB 2.0支持三种传输速率: 
low speed:1.5Mbps(HID设备,例如鼠标、键盘、游戏手柄,通常使用这种速率) 
full speed:12Mbps 
high speed:480Mbps

2. USB OTG

想了解USB OTG的工作原理,需要知道三个协议: 
ADP:Attach Detection Protocol 
HNP:Host Negotiation Protocol 
SRP:Session Request Protocol

2.1 ADP

USB主从设备或USB OTG设备,如何知道USB总线上有没有挂接其它USB设备呢?USB设备会周期性地检测USB端口的电容值,如果USB端口电容值变化足够大,大到可以 确定有新的USB设备接入了,那么USB A型设备会为USB总线提供电源,并检测设备连接;而USB B型设备则发起一个会话请求(SRP),并等待A型设备的响应。

2.2 HNP

2.2.1 主从设备是如何确定的?

USB OTG既可以做主设备,也可以做从设备。在系统运行过程中,OTG设备的角色(主设备or从设备)可以转换,但是,在系统刚启动时,OTG设备的角色是确定的。如何确定的呢?下面来解决这个问题  
  

上图是几种典型的USB接口,其中Mini-A型、Mini-B型、Micro-AB型和Micro-B型口都有五个管脚,管脚顺序是 
1:Vbus 
2:D- 
3:D+ 
4:ID 
5:GND 
若 是ID管脚接地,则该设备为A设备;若ID管脚悬空,则该设备是B设备,其中A设备是initial host,B设备是initial peripheral。即系统刚启动时,A设备是主设备,B设备是从设备。如下图所示,左边的设备是B设备,右边的USB设备是A设备。 
  

值得注意的是,在系统运行的过程中,USB设备的主从角色可能会变化,但是A设备/B设备的名称不会变化。也就是说,在系统运行过程中,A设备有可能从主设备变成从设备,但是A设备仍然叫做A设备;B设备类似。 
另外,A设备始终是供电设备,而与A设备扮演的角色无关。即使A设备变成了从设备,仍然由A设备供电。

2.2.2 为什么需要更换主从设备的角色呢?

  
上图为一个需要互换角色的例子。左边是一台PDA,PDA里有打印机驱动,但由于它是B设备,因此初始角色是从设备。很显然,在打印服务的过程中,有必要互换PDA和打印机的角色。 
我们在开发i.MX233开发板的过程中,ID管脚没有引出来,因此,默认i.MX233是从设备。可是USB摄像头也是从设备,这样i.MX233没有办法转换成主设备,从而i.MX233无法使用USB Camera。

2.3 SRP


正如刚刚提到的那样,A设备一直供电,即使A设备通过HNP协议由主设备变成从设备了,也一直由A设备供电。然而,在嵌入式系统里,尤其是 只有电池供电的系统里,功耗是一个很重要的性能指标。A设备可以通过停止供电终止会话,进而降低功耗。这样就产生了一个问题,如果B设备要求开启一个会 话,该怎么办? 
SRP可以解决这个问题。根据SRP,B设备可以请求A设备打开电源,开始一个会话(session)。 
  
如上图所示,B设备中的SRP PULSE会先给D+引脚一个脉冲,之后再给VBUS一个脉冲,这样可以唤醒A设备。相应的,右边的A设备检测到D+或VBUS上的信号,则开启VBUS并启动会话。

<think>好的,我现在要解决用户关于USB-OTG功能和使用方法的问题。首先,我需要回顾用户提供的引用资料,确保信息的准确性。根据引用[1]和[2],USB-OTG的关键在于USB_ID引脚的状态变化和OTG_PWR_EN的控制。引用[3]解释了OTG的基本概念,即主机协商协议(Host Negotiation Protocol),允许设备切换主机和外设角色。 接下来,我需要将USB-OTG的功能分解成几个部分。首先是原理部分,要说明USB_ID如何检测设备类型,以及如何通过拉高或拉低来判定主机或从机模式。然后是硬件连接部分,需要提到Micro-USB接口的结构,特别是第四脚(USB_ID)的作用,以及如何通过外部电路控制供电。 使用方法方面,用户可能需要知道具体的步骤,比如连接线缆的类型、如何切换模式,以及实际应用场景,比如连接U盘或键盘。同时,注意事项也很重要,比如供电限制和兼容性问题,这些都需要在回答中提到。 另外,用户可能对如何开启设备的OTG功能有疑问,虽然不同设备操作不同,但可以建议查看系统设置或开发者选项。最后,生成的相关问题要覆盖原理、硬件设计、协议差异和应用实例,帮助用户进一步探索。 需要确保回答结构清晰,分点说明,并正确引用提供的资料。同时,避免使用专业术语过多,保持语言通俗易懂。检查是否有遗漏的信息,比如主机协商协议的具体过程,是否需要更详细解释?可能简要提及即可,因为引用[3]已经提到允许设备协商角色。 最后,验证所有LaTeX格式是否正确,特别是行内公式是否用$...$,独立公式是否用$$...$$,但在这个回答中可能不需要数学公式,所以主要检查引用标记是否在正确位置,例如[^1]、[^2]、[^3]是否对应正确的引用内容。</think>### USB-OTG功能与使用方法 #### 一、功能概述 USB-OTG(On-The-Go)是一种扩展了传统USB主从架构的技术,允许设备动态切换**主机(Host)**和**从设备(Device)**角色。例如,手机可通过OTG作为主机连接U盘读取数据,或作为从设备连接电脑传输文件。 #### 二、工作原理 1. **角色检测** - 通过USB接口的**USB_ID**引脚电平判断设备角色:若USB_ID接地(拉低),当前设备为**从设备**;若悬空(默认高电平),则作为**主机**。 - 主机模式下,需通过**OTG_PWR_EN**引脚控制外部供电电路,为连接的从设备提供5V电源(USB_VBUS)。 2. **主机协商协议(HNP)** 设备间通过HNP协议自动协商主从关系。例如,手机连接打印机时,若打印机不支持主机模式,手机会主动切换为主机。 #### 三、使用方法 1. **硬件准备** - 使用**Micro-USB/Mini-USB OTG转接线**,确保接口支持USB-ID引脚检测(标准OTG线需将USB_ID引脚接地)。 - 连接外设(如U盘、键盘等)时,需确认设备供电需求。大功率设备(如移动硬盘)可能需要外接电源。 2. **操作步骤** -OTG线插入设备(如手机)。 - 连接外设(如U盘),系统自动检测并切换为主机模式。 - 通过文件管理器访问外设数据,或通过设置启用特定功能(如鼠标控制)。 3. **典型应用场景** - 手机读取U盘、SD卡。 - 连接键盘/鼠标进行移动办公。 - 数码相机直接连接打印机传输照片。 #### 四、注意事项 1. 供电限制:OTG供电能力有限(通常≤500mA),高功耗设备需独立供电。 2. 兼容性:部分设备需手动开启OTG功能(如进入系统设置或开发者选项)。 3. 系统支持:Android 2.3及以上默认支持OTG,但部分厂商可能限制功能[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值