文章目錄
- 一、什么是 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 電源控制。