USB - OTG

2024-03-01 13:44
文章标签 usb otg

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

USB OTG (On-The-Go)

Definition(定义):

    * USB OTG 可让平板电脑或智能手机等设备充当主机,允许其他 USB 设备(如 USB 闪存驱动器、数码相机、鼠标或键盘)连接到它们。

    * 它允许设备在主机和外设之间切换角色。例如,智能手机可以作为主机设备从可移动媒体读取数据,但在连接到主机时,又可以作为 USB 大容量存储设备。

    * USB OTG enables devices like tablets or smartphones to act as hosts, allowing other USB devices (such as USB flash drives, digital cameras, mice, or keyboards) to be attached to them.

    * It allows devices to switch roles between being a host and a peripheral. For example, a smartphone can read from removable media as the host device but present itself as a USB Mass Storage Device when connected to a host computer.

Roles(角色):

    * USB OTG 为设备定义了两种角色:

        * OTG A 设备: 供电设备。

        * OTG B 设备: 用电设备。

    * 在默认链接配置中,A 设备充当 USB 主机,B 设备充当 USB 外围设备。主机和外设模式可在以后通过主机协商协议(HNP)进行交换。

    * USB OTG defines two roles for devices:

        * OTG A-device: The power supplier.

        * OTG B-device: The power consumer.

    * In the default link configuration, the A-device acts as a USB host with the B-device acting as a USB peripheral. The host and peripheral modes may be exchanged later by using Host Negotiation Protocol (HNP).

Initial Detect(初始化检测):

每个设备的初始角色由 ID 引脚的接线决定。

The initial role of each device is determined by the wiring of the ID pin.

micro 插头的 pin 脚定义:

1 pin 连接电源(VBUS);

2、3 pin 用来传送数据(D+、D-);

5 pin 接地(GND);

4 pin 检测 ID。ID pin——当 OTG 设备检测到 ID pin 接地时,OTG 设备应初始化为 A 设备(主机); 而检测到 ID 引脚浮空时,应初始化为 B 设备(外设)。

type-A 插头的 pin 脚定义:

2 条用来传送数据(D+、D-);

1 条是电源 线(VBUS);

1 条是接地线(GND);

type-A 接口,用于连接 host。

手机使用 OTG 线连接 U 盘时,OTG 线的 micro 插座,ID 引脚直接连接到 GND,ID pin 处于接地状态。 而 OTG 线另一端的 type-A 母座,是没有 ID pin 的。

手机端的 micro 母座,检测到接入的 micro 插头的 ID pin 为接地,所以手机作为主设备 A。

U 盘端 type-A 插座,ID pin 在设计之初就已经拉死,处于悬空状态,所以 U 盘作为从设备 B。

(固定为 device 的设备,一般会直接将 ID pin 悬空,不需要引出到 type-A 接口)

OTG转接线:

micro 数据线:

接口 ID pin 状态:

1.OTG 设备检测到 USB_ID 信号为低电平时,该设备应作为 Host(主机,也称 A 设备)。

2.OTG 设备检测到 USB_ID 信号为高电平时,该设备应作为 Slave(外设,也称 B 设备)。

3.实际的 USB 连接线缆中,不存在 USB_ID 线缆,而在接口部分就直接拉死,要不处于接地状态,要不就 是悬空状态。

4.对于非 OTG 设备,host 设备默认将 USB_ID pin 和地短接,Slave 设备则默认将 USB_ID pin 悬空。

type-A 母座的设备,一般只作为 host,例如 PC。

type-A 插头的设备,一般只作为 device,例如 mouse、keyboard、U 盘。

micro 母座的 OTG 设备,既可作为 host,也可作为 device,例如手机。

Use Cases(使用示例):

    * 连接外部设备: 您可以使用 USB OTG 将外置存储设备(如硬盘或闪存驱动器)连接到手机或平板电脑。

    * 键盘和鼠标: 使用 USB OTG 线缆将键盘或鼠标连接到智能手机或平板电脑。

    * 数码相机: 使用 USB OTG 直接将照片从相机传输到手机。

    * 游戏控制器: 将游戏控制器或其他输入设备连接到移动设备。

    * USB 闪存盘: 轻松访问存储在 USB 闪存驱动器中的文件。

    * Connecting External Devices: You can use USB OTG to connect external storage devices (like hard drives or flash drives) to your phone or tablet.

    * Keyboard and Mouse: Use a USB OTG cable to connect a keyboard or mouse to your smartphone or tablet.

    * Digital Cameras: Transfer photos directly from your camera to your phone using USB OTG.

    * Game Controllers: Connect game controllers or other input devices to your mobile device.

    * USB Flash Drives: Easily access files stored on a USB flash drive.

Compatibility(兼容性):

    * 并非所有设备都支持 USB OTG,但近年来它已变得越来越普遍。

    * 请查看设备规格,了解其是否支持 USB OTG。

    * Not all devices support USB OTG, but it has become more common over the years.

    * Check your device’s specifications to see if it supports USB OTG.

Host Negotiation Protocol (HNP) (主机协商协议):

    * HNP 允许两个 OTG 系统在 USB 连接期间交换主机/外设角色。

    * 当两个设备都是 OTG 双角色设备时,HNP 可使它们交换角色。

    * 通过使用 HNP,OTG 设备可以获得数据传输调度的控制权。因此,任何 OTG 设备都能通过 USB OTG 总线启动数据传输。

    * HNP allows two OTG systems to swap their host/peripheral roles during a USB connection.

    * When both devices are OTG dual-role devices, HNP enables them to exchange roles.

    * By using HNP, an OTG device can acquire control of data-transfer scheduling. Thus, any OTG device can initiate data transfer over the USB OTG bus.

总之,HNP 使 USB OTG 设备能够在主机和外设角色之间动态切换,增强了其多功能性和适应性!

In summary, HNP empowers USB OTG devices to dynamically switch between host and peripheral roles, enhancing their versatility and adaptability!

参考:

1,CSDN

USB OTG基本原理-CSDN博客

2,Bing Copilot

这篇关于USB - OTG的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

Android rk3399 UAC(USB Audio)开发笔记

一、UAC有1.0和2.0,因Windows对2.0支持不好,我使用的是UAC1.0驱动 内核配置:CONFIG_USB_CONFIGFS_F_UAC1          ---这个宏配置无需物理codec,使用虚拟 alsa codec  驱动路径:"kernel\drivers\usb\gadget\function\f_uac1.c" 内核配置:CONFIG_USB_CONFIGFS_

多款式随身WiFi如何挑选,USB随身WiFi、无线电池随身WiFi、充电宝随身WiFi哪个好?优缺点分析!

市面上的随身WiFi款式多样琳琅满目,最具代表性的就是USB插电款、无线款和充电宝款。今天就来用一篇文章分析一下这三种款式的优缺点。 USB插电款 优点:便宜,无需充电,在有电源的地方可以随时随地插电使用,比如中兴的USB随身WiFi。 缺点:无电源的情况下,无法带出门使用,部分品牌考虑到这个问题,会配备一个充电仓,这个充电仓相对来说就有点累赘了。网速上也不太稳定,波动比较大。

基于FPGA的开源项目:FOC/SHA/USB/JPEG等

文章目录 [1. USB 1.1控制器](https://github.com/WangXuan95/FPGA-USB-Device)[2. FOC控制算法](https://github.com/WangXuan95/FPGA-FOC)[3. BSV高级硬件描述语言入门指南](https://github.com/WangXuan95/BSV_Tutorial_cn)[4. 基于XDMA的

关于小米手机USB传输稍大点的文件老中断的问题解决方法!

关于小米手机USB传输稍大点的文件老中断的问题解决方法! 这是一个很痛苦的事情,当你传输大文件的时候,传输到一半就会莫名其妙的中断,拔插数据线很多次以后,好不容易没准可以成功传输一次。 后来使用了360的手机助手,从调试模式传输文件,虽然不会中断,但是慢的要死。 最后我看到手机插上后手机提示 有3种模式:仅限充电 传输文件(MTP) 传输照片(PTP)。当然我们选择传输文件是没戏了,会中

VirtualBox安装VirtualBox Extension Pack,支持USB No USB devices connected after upgrade

安装步骤及出现问题解决No USB devices connected after upgrade: 一、本要主机ubuntu14.04,安装virtualbox,支持usb设置步骤: 1.安装VirtualBox. 可以从https://www.virtualbox.org官方站点下载或者从软件中心。 2.在VirtualBox里安装Windows; 3.为USB2.0,你需要

QT Android开发之Android端usb调试模式设置与问题解决

一.QT android开发android端usb调试模式设置 QT android开发环境搭建完成后,android设备需要打开usb调试模式才能正常连接,下面以小米ipad为例进行设置(其他手机和ipad设置方法类似) 常见问题: 本文会介绍相关问题的解决方法。 二.小

【电子通识】无法识别USB设备怎么就和USB线序有关系

最近在做一个和USB通信有关的工装,有点类似于HUB但又有点不同。Type-C和USB-A两种输入选择,然后再选择输出8个通道中的一个。         在焊接调试时,首先先验证一路。因为USB-A公头转USB-A公头的线有点难找,所以找到一根USB线缆,中间剪掉一半直接焊在USBA焊盘上方便调试。         根据标准的USB接口线颜色的定义,一般为红(VCC)

将RK3588平台的TMC等USB function驱动挪出内核源码树

背景 前一段时间定位一个上位机通过USB-TMC连接下位机(基于RK3588平台)时界面发生卡顿的问题,发现USB-TMC驱动代码是放在内核源码树里跟内核一起编译的,觉着这样既不便于更换TMC 驱动版本(每次修改代码都要重编内核),也不便于将TMC驱动代码单独放到SVN管理(RK的build系统有16GB之巨,全部提交到SVN服务器吃不消),于是考虑将其挪到源码树外。 想参照自己之前在zynq

Linux内核源码-USB驱动分析

基础层次详解 通用串行总线(USB)主要用于连接主机和外部设备(协调主机和设备之间的通讯),USB 设备不能主动向主机发送数据。USB 总线采用拓扑(树形),主机侧和设备侧的 USB 控制器(Host 和 UDC),每个总线只要一个主机控制器。 主机侧的 USB 节点为根节点,所有子节点都连接在根节点集线器(Root hub)上,根节点有 USB 主机控制器(USB Host Controll