带 2 个端口的 USB 设备 - 如何防止用户同时插入两个端口

电器工程 保护 USB设备
2022-01-24 18:49:35

我有一个全速 USB 设备,我想为它提供 2 个端口 - 每个端口位于外壳的两端。这样就可以在最方便的地方连接电缆。我的MCU(atmega32u4)只有一个接口,所以物理端口会共享,但一次只能插入一个。

当然,不能相信用户不会同时插入双方。如何防范这种情况?

我提出的想法:

  • 只需“按原样”连接它们,并希望主机可以处理连接的 D+/D- 引脚
  • 与非门具有单独的 5V 引脚作为输入,输出到 MOSFET,当两者都插入时断开 Vcc。

第二种选择听起来合理,还是需要更复杂的解决方案?

4个回答

正如所指出的,您不能将两个主机直接连接到一个设备 - 所以如果您只是将它们连接在一起并且有人在两端插入它,您就会遇到问题。

但是,如果只插入一端,您也会遇到问题。USB,特别是高速(480Mbps)模式是受控阻抗。如果将两个连接器数据线连接在一起,最终会得到高频设计中的短截线。连接未使用连接器的电缆会降低活动连接器的性能。

要正确执行此操作,您需要一个多路复用器 IC。您可以购买专为此类应用设计的专用 USB2.0 多路复用器,例如TS3USB30这将允许您将两个端口的数据线连接到多路复用器输入,并在内部将输出连接到您的设备。多路复用器将断开未使用的连接器,这将断开传输线短截线。

对于电源,我可能会使用电源多路复用器,例如二极管 OR-ing 电路。然后,来自端口之一(在电源多路复用器之前)的 VBUS 线可用作数据多路复用器的输入。

两个 USB 端口和您的设备之间的接地将是公共的(连接的)。

Tom Carpenter 建议的多路复用器是一个很好的解决方案。

但对于全速 USB (12 Mbps),信号中的短截线并不是特别重要。如果短截线末端之间的距离保持在波长的 1/10 以下,即低于约 2 米,则反射不会使波形失真太多。

此外,D+ 和 D- 引脚上的电压电平将保持在可接受的范围内,因此对任何主机都没有太大的电子损坏风险。

剩下的主要问题是,如果将两个主机的 +5V 引脚连接在一起,可能会涉及大电流。您可以在每个 USB 连接器的 +5V 引脚上使用一个二极管,只让电流流入,永不流出。

懒惰的电子设计方法只是使用物理多连接器开关来选择使用哪一个。

请注意,这将具有额外的好处,即能够让它们都插入并使用开关来选择要使用的输入。

没有符合 USB 标准的方法来执行此操作。USB 不是为在两个主机之间共享而设计的,尝试这样做会导致潜在的灾难性情况。

充其量,您可以使用带有 GPIO 的 USB 多路复用器或开关 IC 来确定连接的是哪个连接器。您必须决定哪个 USB 连接优先,因为两者不能同时连接到您的 USB 接口。

或者看看替代品。让一台计算机与另一台计算机通信。或者使用蓝牙或使用 Wi-Fi 或其他连接类型。