1

对于这个问题,我正在寻找一种设备,它可以让我连接两个 USB 主机,同时仍然是完全可编程的。我想要一些可以做以下事情的东西:

伪装成任意 USB 设备

从 PC 获取输入,除了将其传递给另一台主机之外什么都不做。

我一直在寻找可以让我这样做的微控制器(最好是预组装的),但到目前为止还是空白。有谁知道可以让我这样做的控制器(最好便宜)?

4

4 回答 4

1

从 PC 获取输入,除了将其传递给另一台主机之外什么都不做。

从 USB 的角度来看,这是没有意义的。USB 是基于主机的协议:除非主机首先请求,否则设备永远不会发送数据。请记住,“主机”和“设备”在协议本身中具有特定含义;您可以将“主机”视为主设备,将“设备”视为从设备。这些角色被烘焙到 USB 控制器中。无法说服任何给定 PC 或外围设备中的标准 USB 控制器交换角色。有用于 PC 的附加卡,它们是 USB 设备控制器(使您的 PC 充当设备),但我不会用“便宜”来形容它们。

您真正想做的是创建一个 USB 设备到设备桥接的东西。所以,好吧,你需要有两个 USB(2.0) 设备控制器(也许不那么贵,一些微型计算机已经需要移动控制器)。然后你必须让他们互相传递一些有意义的东西。这真的很难,因为正如我上面提到的,主机必须告诉设备发送数据,并且可以随时向设备发送数据。假设游戏控制器显示为 HID 设备(假设控制台不侦听一些奇怪的自定义描述符,并使用一些奇怪的自定义协议),中断管道将用于传输数据。保证以某个最低速率轮询该管道。所以你有控制台以某种速率请求数据,这不是固定的,主机即游戏手柄以某种速率发送数据。它'

USB也相当快。在高速 (USB2.0) 中,帧长为 125 微秒。这意味着您必须以大约 8KHz 的频率完成请求,与微控制器的时钟速度相比,这似乎很慢,但请记住,您必须同时完成其他所有操作。我不确定是否有一个业余爱好者级别的微控制器可以满足您的所有需求,尤其是您不需要为它推出自己的 USB 堆栈的微控制器。

于 2011-02-10T20:09:24.127 回答
1

试试这个芯片 - > FTDI 232 它们是协议芯片,它将数据转换为 i2c、spi、串行,无论你想要什么。好,简单,便宜:)。FTDI 公司,有更好的(vinculum),有 otg 和你需要的一切,但我会从 FTDI232 开始。你只需要使用你最喜欢的 uC 来做你想做的工作。...另一方面,你必须做一个小板,也许是一些焊接,:)。祝你好运!

于 2011-03-21T21:45:33.807 回答
0

您将需要 $$$$ 的设备和 $$$$$ 的开发工作,以按照您想象的方式实现目标。你最好告诉我们你想模仿什么,如果有人已经为你做过,请看这里。如果没有,则使用具有更大 USB AVR 的 LUFA 库,该库可以充当 USB 主机,并通过其他协议(I2C/SPI/UART)连接其中两个(一个作为 USB 访客,另一个作为 USB 主机)。

于 2011-02-09T12:53:48.137 回答
0

与此同时,这个问题有一个很好的解决方案。将FaceDancer 库与这个出色的软件 (iE GreatFET One )支持的一块板一起使用,您将得到您想要的:

GreatFET One 有两个 USB 连接器:第一个用于模拟任何类型的 USB 设备,而第二个用于转发通过第一个连接器接收/发送的所有请求/响应。

当然这个工具需要你知道你要模拟的设备的USB协议。尽管有一些代码示例,但您仍然必须在自定义它们后立即知道自己在做什么。

于 2020-09-28T13:15:51.397 回答