2011-02-09 96 views
1

this的问题,我在寻找一个设备,将允许我连接两个USB主机,同时仍然完全可编程。我想的东西,可以做到以下几点:可编程USB主机到主机控制器

伪装成任意USB设备

从PC取输入,什么也不做,但它传递到其他主机。

我一直在寻找一个微控制器(最好是预组装),让我做这件事,但迄今拿出空白。有谁知道一个控制器(最好是便宜的),这将允许我这样做?

+0

[Spoofing a game controller](http:// stackoverflow。com/questions/4940825/spoofing-a-game-controller) – 2011-02-09 11:43:49

回答

1

从PC取得输入,不做任何事情,但将它传递给其他主机。

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

什么你真的想要做的是创造的东西,是一个USB设备到设备的桥梁。所以,好吧,你需要有两个USB(2.0)设备控制器(可能不那么昂贵,一些微型控制器已经不得不继续使用)。然后你必须让他们传递一些有意义的东西给对方。这真的很难,因为正如我上面提到的,主机必须告诉设备发送数据,并且可以随时将数据发送到设备。假设游戏控制器显示为HID设备(假设控制台不听某些奇怪的自定义描述符并使用一些奇怪的自定义协议),则会使用中断管道传输数据。这个管道保证以最低速率轮询。所以你有控制台以某种速度请求数据,这是不固定的,主机作为手柄以某种速率发送数据。这两个人不可能同步,因此您需要在您尝试创建的小工具上使用某种体面大小的缓冲区,这会增加更多的$$和更多的复杂性。

USB也非常快。在高速(USB2.0)中,帧长度为125微秒。这意味着您必须以8KHz左右的速度完成请求,这与微控制器的时钟速度相比似乎较慢,但请记住,您必须一次完成所有其他任务。我不确定是否有一个业余爱好者级的微控制器可以提供你需要的一切,尤其是那些你不需要推出自己的USB堆栈的微控制器。

+0

是的,就是这一点。也许我没有足够的自我解释。在收到我早期问题的答案后,我阅读了USB。所以我知道直接连接两台主机是不可能的。我正在寻找一个具有一个或多个OTG控制器+一些其他方式连接到它(Wifi /蓝牙/以太网)的设备。我相信我可能会用GuruPlug开发工具包来实现它,但目前这已超出预算(I我正在寻找价格的一半),所以我想我需要搁置一下。 – 2011-02-10 23:21:05

0

您需要$$$$设备和$$$$$在开发工作实现的东西你想象的方式。你最好告诉我们你想效仿什么,并且看看here如果有人已经为你做了。如果不是,则使用具有较大USB USB AVR的LUFA库,这些USB AVR可以用作USB主机,并通过其他一些协议(I2C/SPI/UART)连接其中的两个(一个用作USB来宾,另一个用作USB主机)。

1

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