文章目录
- 一、什么是 OTG(USB On-The-Go)?
- ✅ OTG 的定义:
- 二、传统 USB 与 OTG 的区别
- 三、OTG 的核心机制:**通过 ID 引脚判断角色**
- 1. 对于 Micro-USB OTG:
- 2. 电路如何感知 ID 引脚?
- 四、OTG 电路典型设计框图
- 五、OTG 状态转换流程(简化)
- 六、VBUS 电源控制
- 七、USB-C 的 OTG 支持(补充)
- 八、调试建议
- 总结
OTG(On-The-Go)是 USB 2.0 引入的一项重要功能,它允许两个 USB 设备在没有 PC 的情况下直接通信。例如,一部手机可以作为 USB Host 连接另一个 USB 设备(比如 U 盘、键盘等),也可以作为 Device 被电脑识别。
一、什么是 OTG(USB On-The-Go)?
✅ OTG 的定义:
USB OTG 是一种允许设备在 Host(主机)和 Device(从机)之间动态切换 的机制,使得嵌入式设备(如手机、平板)既可以作为 USB 设备被 PC 识别,也可以作为主机控制其他 USB 外设。
二、传统 USB 与 OTG 的区别
特性 | USB 标准 | USB OTG |
---|---|---|
主从关系 | 固定:PC 是主机,外设是设备 | 可变:主从可动态协商 |
电缆端口 | 一端为 Host,一端为 Device | 使用 OTG 专用线或 Micro-USB/USB-C |
应用场景 | PC ↔ 外设 | 手机 ↔ U 盘、平板 ↔ 鼠标、摄像头等 |
三、OTG 的核心机制:通过 ID 引脚判断角色
OTG 电路结构主要使用 Micro-USB 或 USB-C 接口,它们都有一个额外的 ID 引脚,这个引脚用于判断设备是 Host 还是 Device。
1. 对于 Micro-USB OTG:
ID 引脚状态 | 角色 |
---|---|
接地(GND) | 作为 Host(A-device) |
悬空(浮空) | 作为 Device(B-device) |
Micro-USB OTG 线内部通过电阻或物理接地来控制 ID 引脚的电平状态。
2. 电路如何感知 ID 引脚?
MCU(如 STM32、NXP i.MX 等)中的 USB OTG 控制器有一个专门的 ID 引脚检测功能(通常是某个 GPIO 或 USB PHY 的内部电路):
- MCU 读取 ID 引脚电平(低电平为 Host,浮空为 Device)
- 硬件或软件逻辑据此配置 USB 控制器为 Host 模式或 Device 模式
四、OTG 电路典型设计框图
Micro-USB接口||-- VBUS (电源)|-- D+ (数据)|-- D- (数据)|-- GND|-- ID ------> MCU 的 ID 检测管脚|+-- GPIO/USBPHY → 判断 Host/Device
五、OTG 状态转换流程(简化)
-
插入 OTG 线缆
-
MCU 检测 ID 引脚状态
- 若为低电平 → 设置为 Host 模式(可提供 VBUS,枚举外设)
- 若为浮空 → 设置为 Device 模式(等待被主机枚举)
-
初始化对应 USB 栈(Host Stack 或 Device Stack)
-
开始通信
六、VBUS 电源控制
- 在 Host 模式下,设备需要提供 VBUS 电源(一般通过 LDO 或负载开关控制)
- 在 Device 模式下,设备通过 VBUS 检测 来判断对方是否是 Host,并准备上电和枚举
七、USB-C 的 OTG 支持(补充)
USB-C 通过 CC(Configuration Channel)引脚协商角色关系,不再依赖传统 ID 引脚,而是通过 CC 引脚的电阻(Rp/Rd)判断谁是 Host。
八、调试建议
- 使用万用表测 ID 引脚是否接地,可判断设备将进入 Host 还是 Device 模式
- 查看 USB OTG 控制器的初始化代码,通常会有类似
USB_OTG_MODE_HOST
/USB_OTG_MODE_DEVICE
的判断逻辑 - 注意切换模式时应关闭/重启 USB 控制器或重新上电 VBUS
总结
OTG 是一种 USB 设备之间可以动态协商主从关系的机制。其核心在于通过 ID 引脚的电平状态 来判断 Host / Device 角色,并据此初始化对应的 USB 协议栈和控制器配置。OTG 电路设计重点在于 ID 引脚连接和 VBUS 电源控制。