首页 文章

可编程USB主机到主机控制器

提问于
浏览
1

问题是,我正在寻找一种可以连接两个USB主机的设备,同时仍然可以完全编程 . 我想要的东西可以做到以下几点:

伪装成任意USB设备

从PC获取输入,除了将其传递给其他主机之外什么也不做 .

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

3 回答

  • 1

    从PC获取输入,不做任何事情,只是将其传递给另一台主机 .

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

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

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

  • 1

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

  • 0

    您将需要设备中的$$$$和开发工作中的$$$$来以您想象的方式实现目标 . 您最好告诉我们您想要模仿什么,如果有人已经为您做了,请查看here . 如果没有,那么使用LUFA库和一些更大的USB AVR,它可以作为USB主机,并通过其他协议(I2C / SPI / UART)连接其中两个(一个作为USB客户端,另一个作为USB主机) .

相关问题