USB OTG的工作原理
  OTG补充规范对USB 2.0的最重要的扩展是其更具节能性的电源管理和允许设备以主机和外设两种形式工作。OTG有两种设备类型:两用OTG设备(Dualrole device)和外设式OTG设备(Peripheralonly OTG device) 。两用OTG设备完全符合USB 2.0规范,同时,他还要提供有限的主机能力和一个MiniAB插座、支持主机流通协议(Host Negotiatio n Protocol, HNP),并和外设式OTG设备一样支持事务请求协议(Session Request Protocol, SRP)。当作为主机工作时,两用OTG设备可在总线上提供8 mA的电流,而以往标准主机则需要 提供100~500 mA的电流。

  2个两用OTG设备连接在一起时可交替以主机和从机的方式工作,这个特点兼容了现有USB 规范主机/外设的结构模型。OTG主机负责初始化数据通信的任务,比如:总线复位、获取USB 各种描述符和配置设备。这些配置完成后,2个OTG设备便可以分别以主机和从机方式传输信息,2个设备主从角色交换的过程由主机传输协议(HNP)定义。

1.1主机(Adevice)和从机(Bdevice)的初始功能
  设备的初始功能是通过定义连接器来实现的。OTG定义了一个叫做MiniAB的袖珍插孔,他能直接接入MiniA或者MiniB插口,MiniAB有一个ID引脚 上拉至电源端,MiniA插头有一个与地连接好的ID(R<10 Ω),Mini B插头有一个与地连接的开路ID引脚(R>100 kΩ)。当2个OTG设备连接到一起的时候 ,MiniA插头边的ID引脚会注入一个“0”状态,MiniB插头边的ID引脚为 “1”,ID为0的OTG设备默认为主机(Adevice),ID为1的OTG设备默认为从机(B device)。图1对上述内容进行了图解。
1.2对话请求协议SRP(Session Request Protocol)
  这个协议允许Adevice(可以是电池供电)在总线未使用时通过切断Vbus来节省电源消耗,也为Bdevice启动总线活动提供了一种方法。任何一个Adevice, 包括PC或便携式电脑,都可以响应SRP;任何一个Bdevice,包括一个标准USB外设, 都可以启动SRP;要求一个双重功能设备既能启动SRP,又能响应SRP。
1.3主机流通协议HNP(Host Negotiation Protocol)
  HNP是一种用来实现Adevice和Bdevice主机/从机转换的协议(实际上是电缆的反转)。主/从机功能交换的结果表现在下列过程中:
  (1)利用上拉电阻来发送信号给从机。
  (2)Adevice可在Bdevice上设置“HNP Enable”特性。
  (3)Bdevice断开上拉。
  (4)ADevice与上拉电阻相连,表明Adevice从属于从机。
  (5)Adevice给Vbus供电。
  (6)Bdevice检测Adevice的上拉。
  (7)复位/列举/使用Adevice。
1.4驱动程序
  与PC主机不同,便携式设备没有便捷的方式和足够的空间装载新的驱动程序。因此,OTG 规范要求每个两用OTG设备有一个支持的外设式OTG目标设备的列表,列表中包括设备的类型和制造商等信息。
  与PC机不同,OTG两用设备的驱动程序栈由USB主机栈和USB设备栈构成以满足两种工作方式的需要。OTG驱动程序通过连接器的不同或者是否有NHP交换设备的工作方式来决定使用USB主机栈还是USB设备栈。
  当OTG两用设备以主机方式工作时,USB主机栈工作。其中的主机控制器驱动程序负责USB 主机栈与硬件端点的数据交换,USB驱动程序枚举并保存设备的信息,目标外设主机类驱动程序支持目标设备列表里的设备。主机类驱动程序由芯片制造商提供,同时,OTG提供通用的主机类驱动程序(可以修改以用于非通用设备)。
  当OTG两用设备以从机方式工作时,USB设备栈工作。其中的设备控制器驱动程序负责USB 设备栈与硬件端点的数据交换,USB协议层负责处理USB协议规范,设备类驱动程序的功能取决于该两用设备的功能(如数码照相机、存储设备、打印机等)。
  OTG驱动程序负责处理两用OTG设备的工作方式转换,同时,他还可以返回其结果(如设备是否支持HNP)并处理总线错误。应用层程序通过OTG驱动程序开始或者结束一个传输事务, 通过USB主机栈或设备栈与硬件层交换数据。
1.5数据流模型
  OTG主机和设备被划分为功能层、USB设备层和USB接口层3个不同层次,如图2所示。
  USB接口层为OTG主机和OTG设备提供物理连接,USB系统软件使用主机控制器来管理主机与 USB设备的数据传输。USB系统软件相对于主机控制器而言,处理的是以客户角度观察的数据传输及客户与设备的交互。USB设备层为USB主机系统软件提供一个可用的逻辑设备。主机通过与之功能匹配的客户软件实现其各种功能。
  OTG设备与以往的USB设备一样有两种通道:数据流通道和消息通道。数据流通道没有定义好的结果,而消息通道则有固定的结构。但是,每个通道都有一定的带宽、传输类型、传输方向和缓冲区大小。自供电设备配置一个默认的控制通道,由他提供该设备的配置和状态等信息。


一问一答:
1 . 什么是USB OTG?
     USB OTG是USB 2.0的补充规范
2.  USB OTG针对USB 2.0的最重要扩展是什么?
    更具节能性的电源管理和允许设备以主机和外设两种形式工作。
3. USB2.0中定义三种类型: HOST(主机),Device(设备), HUB
    OTG新增两种设备: Dual-role device(两用设备),Perip-heral-only OTG device(OTG外设)
4. USB 2.0中定义了三种连接器对(插头和插座): Standard-A(主机),Standard-B(外设),Mini-B(较小的外设)
    OTG新增插头: Mini-A
    OTG新增插座: Mini-A和Mini-AB(同时支持Mini-A或Mini-B的插头)
    其中插头和插座内部的塑料颜色:Mini-A为白色,Mini-B为黑色,Mini-AB为灰色
5. USB 2.0中定义了两种电缆: Standard-A至Standard-B,  Standard-A至Mini-B
    OTG增加的两种电缆:Mini-A至Standard-B, Mini-A至Mini-B
6. OTG的Dual-role device(两用设备)必须具备:
    1) 有限的主机能力
    2) 可作为全速的外设(可选的高速方式)
    3)可作为全速的主机(可选的低速或高速方式)
    3) OTG目标设备的列表及驱动程序
    4)支持SRP,HNP
    5)一个Mini-AB插座
    6)VBUS上不小于8mA的电流输出
    7)与用户通讯的方式
7. Perip-heral-only OTG device(OTG外设):
    1.是普通的USB外设
    2. 支持SRP
    3. 一个Mini-B插座(不能使用Mini-AB)

USB学习笔记——OTG功能相关推荐

  1. USB学习笔记(3)HID应用分析

    USB学习笔记(3)HID应用分析 本文根据前面对USB系统的了解,和USB协议的学习,列出鼠标,键盘,多媒体控制器,自定义HID设备等HID设备的各种描述符. 前景提要:每个设备有且仅有一个设备描述 ...

  2. USB学习笔记(4)STM32关于USB库的解读

    USB学习笔记(4)STM32关于USB库的解读 为了方便在STM32上实现USB功能,本文对USB库的文件进行解读. USB-FS_Device peripheral interface(外围接口) ...

  3. USB学习笔记(5)STM32 USB库移植步骤

    USB学习笔记(5)STM32 USB库移植步骤 本文是将官网的USB驱动库文件移植到自己的工程里面,实现USB功能的具体移植步骤说明,实现Custom_HID功能. 1.先准备一个工程模板 获取工程 ...

  4. USB学习笔记(2)USB协议

    USB学习笔记(2)USB协议 本文对前面提到的USB枚举过程中的标准请求以及各种描述符做出大致解释,方便后面的实操. 1. USB标准请求 USB协议定义了一个8字节的标准设备请求,主要用在设备的枚 ...

  5. 树莓派学习笔记——GPIO功能学习

    0.前言 树莓派现在越来越火,网上树莓派的资料也越来越多.树莓派源自英国,国外嵌入式开源领域具有良好的分享精神,树莓派各种集成库也层出不穷,下面推荐几个. [ python GPIO ] [开发语言] ...

  6. USB学习笔记连载(八):FX2替换到FX2LP需要注意事项

    对于使用FX2的用户,可以升级到FX2LP,上述的应用笔记<AN4078-C>中就讲解了在升级中的注意事项.   必要的修改:   1.晶振的匹配电容需要更改,FX2LP是12pF,不过笔 ...

  7. linux usb学习笔记

    USB 设备基础知识 usb端点 usb端点用一个结构体来描述 USB 端点在内核中使用结构 struct usb_host_endpoint 来描述. 这个结构包含真实的端点信息在另一个结构中, 称 ...

  8. USB学习笔记连载(十五):USB固件更新以及安装驱动

    前几篇博客已经把如何更改固件程序和更改USB驱动名称,那么接下来就要把之前生成的 .iic 文件烧录到EEPROM里面去,实现USB的C2启动(笔者使用的是此类型,C2启动). 打开Cypress U ...

  9. Android usb学习笔记:Android AOA协议Android端 流程总结

    背景 上篇文章中我们了解了嵌入式设备端将Android手机设置为accessory模式的流程以及嵌入式设备端接收和发送数据的流程,本文将对应介绍Android端accessory模式被激活的过程,以及 ...

最新文章

  1. CMD 一条命令 执行 多条命令
  2. Bootstrap系列 -- 38. 基础导航条
  3. RPC创建API 模块
  4. 浅谈UML的概念和模型之UML九种图
  5. E: Sub-process /usr/bin/dpkg returned an error code (1)解决办法
  6. 【将图像字符画】【第二玩】图像字符化
  7. Harbor的搭建(vmware企业级docker镜像私服)
  8. 构造一条二次bezier曲线_那些处处连续,处处不可导的曲线
  9. NANDFLASH与PSRAM
  10. java easyui tree例子_easyui-treegrid的案例
  11. Spring事务报错Transaction synchronization is not active
  12. HDUOJ 6608 Fansblog
  13. Handler基本使用(一) new Handler
  14. 微信摇一摇插件ios_iOS-仿微信摇一摇
  15. 大型生鲜配送企业如何做到快速分拣商品?
  16. 如果你决定离职,请把这五样东西留下,要不然你必身败名裂
  17. Jmeter的配置原件操作
  18. Flutter 自定义控件-仿照安卓和抖音图标绘制
  19. 【数据挖掘·总复习】第三章-关联规则挖掘||Apriori||详细整理||知识点+例题||考点有
  20. 图的深度优先遍历实现农夫过河

热门文章

  1. Ubuntu普通用户无法SSH登陆而root用户可以正常登陆问题
  2. 复制文件提示一个意外错误使您无法复制该文件win7?
  3. 最彻底的磁盘碎片整理方法
  4. 步步为营 .NET 设计模式学习笔记 七、Proxy(代理模式)
  5. python学习笔记,pycharm注释有黄色下划线,已解决
  6. 让你的网站从http免费升级为https
  7. CCPC-Wannafly Winter Camp Day7 J-强壮的排列(打表)
  8. 哪款国产蓝牙耳机好?国产耳机品牌排行榜推荐
  9. 微信小程序云开发上传图片无法预览显示
  10. 本地连接github