USB接口&协议详解

  USB(Universal Serial Bus,通用串行总线)是计算机和外部设备通信的标准化接口协议。自1996年发布USB 1.0以来,已经发展出多个版本(USB 2.0、USB 3.x、USB4),并广泛应用于PC、移动设备、嵌入式系统等领域。


1. USB协议版本及关键特性

版本 发布时间 最大速率 关键改进
USB 1.0 1996 1.5 Mbps(Low Speed)
12 Mbps(Full Speed)
首次标准化,支持热插拔
USB 2.0 2000 480 Mbps(High Speed) 广泛兼容,支持OTG
USB 3.0 2008 5 Gbps(SuperSpeed) 全双工传输,提高能效
USB 3.1 2013 10 Gbps(SuperSpeed+) 引入Type-C接口
USB 3.2 2017 20 Gbps(SuperSpeed+ 2x2) 多通道传输
USB4 2019 40 Gbps(基于Thunderbolt 3) 兼容雷电3,支持DP Alt Mode

2. USB物理接口类型

USB接口形态多样,主要分为:

(1) 传统接口(USB-A / USB-B)

  • USB-A(Host端,如PC)

  • USB-B(Device端,如打印机)

  • Mini-USB / Micro-USB(旧款手机、移动设备)

(2) USB Type-C(现代标准)

  • 对称设计(正反可插)

  • 支持USB 3.1/3.2/USB4

  • 支持Alternate Mode(如DisplayPort、Thunderbolt 3)

  • 供电能力增强(USB PD,最高240W)


3. USB通信架构

(1) 拓扑结构

  • Host(主机):PC、手机(OTG模式下)

  • Device(设备):U盘、键盘、鼠标

  • Hub(集线器):扩展USB接口

(2) 数据传输模式

传输类型 用途 示例
控制传输(Control) 设备枚举、配置(Endpoint 0) USB设备初始化
中断传输(Interrupt) 低延迟、小数据量 键盘、鼠标
批量传输(Bulk) 大数据量,无实时性要求 U盘、打印机
等时传输(Isochronous) 实时流数据(无重传) 摄像头、音频设备

4. USB协议栈

(1) 物理层(PHY)

  • 负责信号调制(NRZI编码、差分信号D+/D-)

  • USB 2.0:单通道差分对(D+/D-)

  • USB 3.0+:增加超高速差分对(SSRX+/SSTX+等)

(2) 链路层(Link Layer)

  • 数据包(Packet)封装:

    • SYNC(同步)

    • PID(包标识,如DATA0/DATA1)

    • CRC(校验)

(3) 协议层(Protocol Layer)

  • 设备枚举(Enumeration):Host识别Device并分配地址。

  • 事务(Transaction):IN(Host读)、OUT(Host写)、SETUP(控制命令)。

(4) 应用层

  • 设备类(Class):标准化接口(如HID、CDC、MSC)。

    示例:
    - HID(Human Interface Device):键盘、鼠标  
    - CDC(Communication Device Class):虚拟串口  
    - MSC(Mass Storage Class):U盘  

5. USB设备开发关键点

(1) 硬件设计

  • USB控制器(如STM32的USB OTG IP、FTDI的USB转串口芯片)。

  • ESD防护:TVS二极管防止静电损坏(如USBLC6-4SC6)。

  • 阻抗匹配:USB 2.0差分线90Ω阻抗控制。

(2) 软件实现

  • 设备描述符(Descriptor):定义设备类型、接口、端点。

    // USB HID键盘描述符示例:

  •  const uint8_t HID_ReportDescriptor[] = { 0x05, 0x01, // Usage Page (Generic Desktop) 0x09, 0x06, // Usage (Keyboard) 0xA1, 0x01, // Collection (Application) 0x05, 0x07, // Usage Page (Key Codes) 0x19, 0xE0, // Usage Minimum (0xE0) 0x29, 0xE7, // Usage Maximum (0xE7) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x75, 0x01, // Report Size (1) 0x95, 0x08, // Report Count (8) 0x81, 0x02, // Input (Data, Var, Abs) };

  • 协议栈选择

    • 嵌入式:LibUSB、STM32 USB库。

    • Linuxusbcore内核模块 + Gadget驱动。

(3) 调试工具

  • USB协议分析仪(如TotalPhase Beagle、Wireshark + USB抓包)。

  • 逻辑分析仪(解码USB 2.0低速/全速信号)。


6. USB常见问题

(1) 兼容性问题

  • 供电不足:USB 2.0设备插在USB 3.0端口可能因电流限制无法工作。

  • 协议版本混淆:USB 3.0线缆必须支持超高速信号,否则降级为USB 2.0。

(2) 信号完整性

  • 长线衰减:USB 2.0建议线长<5m,USB 3.0<3m。

  • EMI干扰:差分线需平行走线,避免跨分割。

(3) 软件配置

  • 驱动缺失:Windows需安装INF驱动(如自定义HID设备)。

  • 枚举失败:描述符错误导致Host拒绝设备。

7.USB OTG(on-the-go)

  USB OTG(On-The-Go)是USB标准的扩展,允许设备(如手机、平板、嵌入式设备)在**主机(Host)外设(Device)**模式之间动态切换,从而无需依赖PC即可直接与其他USB设备通信。

7.1. USB OTG 核心概念

(1) 与传统USB的区别

特性 传统USB USB OTG
角色固定 主机(Host)或设备(Device)固定 可在Host/Device间动态切换(Dual-Role)
供电方式 主机供电(5V/500mA) 可协商供电(支持电池供电设备)
典型应用 PC连接U盘、键盘等 手机读取U盘、相机连接打印机等

(2) 关键术语

  • A-device(默认Host):提供VBUS电源(如手机连接U盘时)。

  • B-device(默认Device):消耗VBUS电源(如U盘被手机读取时)。

  • HNP(Host Negotiation Protocol):允许设备动态切换Host/Device角色。

  • SRP(Session Request Protocol):用于唤醒或协商供电。

7.2. USB OTG 硬件设计

(1) ID 引脚识别

  • Micro-USB/Mini-USB接口ID引脚决定初始角色:

    • ID接地(0V) → 设备作为A-device(Host)(如OTG手机连接U盘)。

    • ID悬空/接高电平 → 设备作为B-device(Device)(如手机连接PC)。

  • Type-C接口:通过CC(Configuration Channel)引脚协商角色,无需ID引脚。

(2) VBUS供电管理

  • A-device需提供5V VBUS电源(通常通过PMIC或专用OTG芯片如TPS65133)。

  • B-device检测VBUS电压(>4.4V)以确认连接。

(3) 典型电路设计

Micro-USB OTG 连接示例:
   ┌───────────────┐       ┌───────────────┐
   │   OTG设备     │       │   外设(U盘) │
   │               │       │               │
   │  VBUS ────────┼───────┼─► VBUS        │
   │  D+  ────────┼───────┼─► D+          │
   │  D-  ────────┼───────┼─► D-          │
   │  GND ────────┼───────┼─► GND         │
   │  ID ────┐    │       │               │
   │         ˅    │       │               │
   │      (接地)  │       │               │
   └───────────────┘       └───────────────┘

7.3. USB OTG 协议与软件支持

(1) 协议栈

  • USB 2.0 + OTG补充协议:支持HNP/SRP协商。

  • Linux/Android:通过dwc2/dwc3驱动支持OTG(如/sys/kernel/debug/usb/目录下的角色切换)。

  • 嵌入式系统(STM32等):需启用USB OTG库(如STM32Cube的HAL_PCDHAL_HCD)。

(2) 常见应用场景

场景 角色切换 示例
手机读取U盘 手机(Host) ↔ U盘(Device) 通过OTG线连接FAT32格式U盘。
两台手机互传文件 动态切换Host/Device(需HNP支持) 通过USB OTG + 文件传输协议(MTP)。
嵌入式设备调试 MCU(Host) ↔ PC(Device) STM32通过USB CDC虚拟串口输出日志。

7.4. USB OTG 常见问题

(1) 兼容性问题

  • 电压不足:部分设备VBUS输出电流不足(如<500mA),导致外设无法工作。
    解决方案:外接供电或使用带电源的USB Hub。

  • 协议不支持:旧设备可能仅支持USB 2.0,无法触发OTG模式。

(2) 软件配置

  • Android设备:需内核启用OTG驱动,部分厂商可能禁用此功能。

  • 嵌入式MCU:需正确配置USB时钟和引脚复用(如STM32的PA11/PA12)。

(3) 物理接口

  • Type-C替代Micro-USB:Type-C通过CC引脚实现更灵活的DRP(Dual-Role Power)模式。

8. 总结

  • USB协议是分层设计的复杂标准,涵盖物理接口、数据链路、协议栈和应用层。

  • 关键设计点

    • 硬件:接口类型(Type-C/A/B)、ESD防护、阻抗控制。

    • 软件:设备描述符、协议栈(HID/CDC/MSC)、Host/Device角色管理。

  • 未来趋势:USB4/Thunderbolt 4统一高速接口,支持40Gbps + DP Alt Mode。

你可能感兴趣的:(网络,大数据)