我有一个全速USB设备,我想为其提供2个端口-机箱的相对两端各一个。这样一来,就可以在最方便的地方连接电缆。我的MCU(atmega32u4)只有一个接口,因此可以共享物理端口,但一次只能插入一个。
当然,不能信任用户不立即插入双方。如何防止这种情况发生?
我提出的想法:
- 只需按原样将它们连接起来,并希望主机可以处理连接的D + / D-引脚
- NAND门具有单独的5V引脚作为输入,输出到MOSFET,当两者均插入时,MOSFET断开Vcc。
第二种选择听起来合理吗,还是需要更复杂的解决方案?
我有一个全速USB设备,我想为其提供2个端口-机箱的相对两端各一个。这样一来,就可以在最方便的地方连接电缆。我的MCU(atmega32u4)只有一个接口,因此可以共享物理端口,但一次只能插入一个。
当然,不能信任用户不立即插入双方。如何防止这种情况发生?
我提出的想法:
第二种选择听起来合理吗,还是需要更复杂的解决方案?
Answers:
如前所述,您不能将两台主机直接连接到设备-因此,如果仅将它们连接在一起,并且有人将其两端都插入,则可能会出现问题。
但是,如果仅插入一端,也会遇到问题。USB(尤其是高速(480Mbps)模式)是受控阻抗。如果将两条连接器的数据线连接在一起,则最终会导致高频设计中的短截线。连接到未使用的连接器的电缆会降低活动连接器的性能。
为了正确执行此操作,您需要一个多路复用器IC。您可以购买专门为此类应用设计的专用USB2.0多路复用器,例如TS3USB30。这样一来,您就可以将两个端口的数据线连接到多路复用器输入,并在内部将输出连接到设备。多路复用器将断开未使用的连接器,该连接器将断开传输线插头。
对于电源,我可能会使用电源多路复用器,例如二极管“或”电路。来自端口之一(电源多路复用器之前)的VBUS线路然后可用作数据多路复用器的输入。
两个USB端口与您的设备之间的接地是公共的(连接的)。
没有兼容USB的方法。USB并非设计为在两个主机之间共享,否则尝试将导致潜在的灾难性情况。
充其量,您可以使用带有GPIO的USB多路复用器或开关IC来确定连接了哪个连接器。您必须确定哪个USB连接具有优先权,因为两者不能同时连接到您的USB接口。
或看看替代方案。让一台计算机与另一台计算机通信。或使用蓝牙或使用Wi-Fi或其他连接类型。
也许将USB连接器留在外壳的一侧并对称地复制和/或重新放置所有其他面向用户的元素会更容易。然后可以旋转外壳,使USB端口面向连接器,同时仍然可以方便地访问所有其他元素。
另一种选择是将两个端口都定位在机柜的一侧(相对端),并在外壳内添加一个滑动端头,用户可以移动该滑动端头以打开一个端口或另一个端口。12 MHz USB很有可能与连接的额外断开端口一起工作。