ZHCAFT1 September   2025 AM2612

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2USB 主机检测
    1. 2.1 通用 USB 主机检测流程
    2. 2.2 AM261x USB 主机检测
  6. 3硬件修改
  7. 4软件修改
    1. 4.1 USB Synp 驱动程序中的更改
    2. 4.2 USB 应用程序中的更改
    3. 4.3 重新构建 USB 驱动程序和应用程序的步骤
      1. 4.3.1 重建 USB 库
      2. 4.3.2 重新构建 USB 应用程序
        1. 4.3.2.1 CCS 构建
        2. 4.3.2.2 命令行构建
    4. 4.4 测试新应用程序
  8. 5总结
  9. 6参考资料

通用 USB 主机检测流程

USB(通用串行总线)定义了强大的机制,用于检测何时连接主机和器件,并在进行任何枚举之前建立所需的电气条件。在传统实现中,这种检测主要通过监测 VBUS 线路和 D+/D– 差分对来实现,确保只有在确认有效的主机器件关系后,控制器才会启用数据通信。VBUS 线路是主机提供的主电源轨。在标准 USB 2.0 实现中,主机以 USB 规范定义的电流能力,在 VBUS 上提供 5V 电压(对于高速 USB 2.0,通常为 500mA,对于 USB 3.x 则更高)。器件不应驱动这条线路。

传统 USB 器件控制器包含 VBUS 检测电路,该电路可检测是否存在 5V 信号。可使用以下两种方法之一执行检测:

  • 基于比较器的检测:内部比较器持续监测 VBUS。一旦电压上升到超过特定阈值(例如,规范定义的最小值为 4.4V),控制器就会设置状态标志,指示存在有效的主机连接。
  • 专用 VBUSVALID 输入:许多控制器提供直接连接到 USB PHY 的 VBUS 引脚。只要 VBUS 输入超过有效范围,PHY 就会将内部 VBUSVALID 信号置为有效。

该 VBUSVALID 信号非常关键,因为该信号会阻止 USB 器件逻辑在连接有效主机之前启用收发器。如果没有该驱动器,器件可能会错误地尝试驱动总线,从而导致线路上出现未定义的状态或争用。USB 规范规定了一系列去抖间隔,以验证可靠的检测。例如:

  • VBUS 升至 4.4V 以上后,器件必须等待至少 100ms,然后才能消耗超过 100mA 的电流。
  • 主机在将 D+ 或 D– 上拉电阻解释为有效连接之前,会应用一个去抖周期(至少 100ms)。

这些时序要求可防止由噪声、热插拔事件或电源不稳定引起的错误检测。传统的 USB PHY 集成了这种去抖逻辑,会自动选通内部使能信号,直到条件稳定为止。

传统实现流程:

利用 VBUS 检测的典型 USB 器件初始化序列如下所示:

  1. 空闲状态:器件 PHY 已通电,但收发器保持禁用状态。
  2. VBUS 检测:主机提供 5V 电源,控制器内部置位 VBUSVALID 信号。
  3. 器件使能:USB 控制器在适当的线路(D+ 或 D-)上启用收发器和上拉电阻器。
  4. 主机检测器件:主机检测上拉电阻状态,并开始发出复位信号。
  5. 枚举:器件响应复位,协商速度,并通过描述符交换开始枚举序列。

此序列会验证是否有序连接以及是否符合 USB 规范。