USB接口&协议详解

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


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

版本发布时间最大速率关键改进
USB 1.019961.5 Mbps(Low Speed)
12 Mbps(Full Speed)
首次标准化,支持热插拔
USB 2.02000480 Mbps(High Speed)广泛兼容,支持OTG
USB 3.020085 Gbps(SuperSpeed)全双工传输,提高能效
USB 3.1201310 Gbps(SuperSpeed+)引入Type-C接口
USB 3.2201720 Gbps(SuperSpeed+ 2x2)多通道传输
USB4201940 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的区别

特性传统USBUSB 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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值