我注意到,在 Windows XP 和 7(分别是 2 台不同的计算机)上,如果我连接了电缆,我可以设法获得“如果将其连接到高速 USB 2.0 端口,该设备可以执行得更快”通知弹出非常缓慢(或仅用一只手就有点挣扎)。如果我用双手足够快或正常地连接它,则没有通知。在任何一种情况下,所有此类设备似乎都能正常运行。
我认为发生的情况是,在缓慢/笨拙的连接过程中,电线之间的接触中断了足够长的时间,USB 控制器认为它不是 2.0,而是速度较慢。但为什么会这样认为呢?或者为什么它不只是说“你不擅长连接电缆,请拔掉插头再试一次”?
Ale*_*ski 76
该消息指的是协商 12 Mbit/s 的旧全速 (FS) 数据速率,而不是 480 Mbit/s 的高速 (HS) 数据速率。从 USB2 端口获得这种效果一定非常困难。USB2.0 HS 协议在设备和主机之间经过相当复杂的协商后建立,因为最初每个 HS 设备都充当 FS 设备。
正常流程如下:
支持 HS 的设备在获得 1-1.5k 的 VBUS 信号后上拉 D+ 线?电阻为 3.3V。就像 FS 设备一样。
主机端口检测到 D+=高电平,并在至少 100 毫秒的去抖动延迟后,主机在总线上断言 USB_RESET 状态,以 45? 驱动程序为 10 或 50 毫秒。
如果设备是 FS,它什么都不做,一直等到 USB_RESET 结束。
如果设备是 HS,它将使用 HS 驱动器(18mA 源)驱动 D-高约 1ms。这将产生一个幅度约为 800mV(18ma 到 45? 负载)的脉冲,称为“Chirp-K”;
在检测到 Chirp-K 的结束时,如果主机能够处于 HS 模式,它会将该信号驱动回(相同的 18mA 到自己的 45? 负载),现在大约为 50µs。如果是 FS 主机,则忽略 Chirp-K,并作为 FS 继续。
然后,如果主机能够进入 HS 模式,它会将其驱动器切换到 D+ 线,形成“Chirp-J”,再次持续 50µs;
主机在 USB_RESET 状态的整个持续时间内重复这种交替的 50µs 模式(集线器端口为 10ms,根集线器端口为 50ms);
三个交替的 chirp-K/J 后,设备识别出主机是 HS,并自行切换到 HS 模式。这意味着打开设备端的 HS 端接,这使得总导线电阻为 22Ω,啁啾信号幅度下降到 400mV,达到标准的 HS 信号电平。
主机继续处理 HS 帧起始 (SOF) 数据包,并在 HS 模式下启动枚举过程。
现在任何人都可以猜测摆动的哪一部分确实破坏了该协议,并使主机将端口标记为 FS。
Ton*_*nny 32
当您将设备插入 USB2 端口时,计算机首先尝试使用 USB2 数据协议协商连接。
当失败时,它会使用 USB1 数据协议再次尝试。
我最好的猜测是物理连接(由于摆动触点)在 USB2 协商期间还不稳定。因此它回退到 USB1,即使该设备是 USB2 设备。
有趣的是,Windows 确实意识到该设备应该具有 USB2 速度(它从驱动程序获取的信息),因此 Windows 得出结论,您插入它的 USB 端口是一个慢速 USB1 端口。Windows 似乎不会检查端口本身是否支持 USB2。
这就是为什么您会收到有些误导的错误消息。
PS 自己在 Windows 10 机器上试了一下:效果一样。
小智 0
可能是您插入速度太慢,以至于 Windows 已经完成了与控制器的握手过程,并且当时 USB 2.0 通信所需的触点没有接触。这可能会导致 Windows 将 USB 2.0 设备误认为是 1.1设备,因为标记为仅存在于 USB 2.0 及更高版本的导轨上不会有响应。
| 归档时间: |
|
| 查看次数: |
9767 次 |
| 最近记录: |