查看USB 3.0插座的插针,我可以看到有单独的发送和接收对,但是对于USB 2.0,只有一对“数据”插针。USB 2.0如何确保设备无法同时通信?
查看USB 3.0插座的插针,我可以看到有单独的发送和接收对,但是对于USB 2.0,只有一对“数据”插针。USB 2.0如何确保设备无法同时通信?
Answers:
USB严格是主从设备。除非主机指示其发送,否则设备不会发送信息。
甚至所谓的“中断”模式也确实在轮询:例如,每8毫秒(如果您有游戏鼠标,则更短),PC会询问鼠标“您的位置是什么”,然后鼠标答复。
例如,如果您具有USB串行接口,则相同。当接口在串行线上接收数据时,它将不会将其传输到PC。相反,它将等待PC启动事务并请求数据。
该网页对交换的数据包有很好的解释。基本上,请记住,实现USB是为了使最笨拙,最便宜的外围设备正常工作,这意味着大多数智能功能都在主机,主机USB控制器,操作系统和驱动程序中。阅读规范时,这非常明显。
例如,Firewire具有完全不同的理念,它的功能强大得多,它是多主设备,因此设备无需主机/主设备的帮助即可相互通信。实际上,与USB相比,它的哲学实际上更类似于令牌环,其顶部具有同步传输的令牌传输。但是,“多主设备”意味着它需要设备中功能强大的微控制器,并运行复杂的软件堆栈。因此,它更昂贵,因此仅限于诸如摄录机和快速硬盘驱动器外壳之类的昂贵产品。火线鼠标没有任何意义,太贵了。这就是FireWire失败的原因之一。
在USB框架中,设备无法同时通信,因为它们仅在USB主机“允许”它们交谈时才“交谈”。USB主机仅在与第一个设备的顺序事务协议完成后才允许另一个设备“交谈”。而且USB设备本身没有任何“交谈”的手段,USB中没有活动的中断机制。简而言之,实施该学科的机制如下。
连接USB 2.0设备后,主机通过为每个设备分配唯一的地址来枚举它们。
总线上的每个事务都由USB主机启动。
每个USB事务的标头都带有特定的设备地址。即使在整个USB树上(在特定的主机控制器实例上)广播事务时,只有具有匹配地址的设备才会响应事务,并接收数据或响应数据。
然后,链接“合作伙伴”将按照成功接收数据的人的方向发送确认。整个交易遵循已建立的协议,该协议具有定义的令牌,超时和纠错码序列,以确保交易的完整性。
所有其他设备都只是在侦听并忽略了未定向到它们的流量。
就是这样,它是“半双工”接口。