2011-02-09 3 views
1

В дополнение к вопросу this, я ищу устройство, которое позволит мне подключить два USB-хоста, будучи все еще полностью программируемым. Я хотел бы что-то, что может сделать следующее:Программируемый usb-хост для хост-контроллера

Маскарад как произвольное устройство USB

Возьмите вход с ПК и ничего не делать, но передать его на другой хост.

Я искал микроконтроллер (желательно предварительно собранный), который позволит мне это сделать, но до сих пор пришло в порядок. Кто-нибудь знает о контроллере (желательно дешевом), который позволит мне это сделать?

+0

Возможный дубликат [Spoofing game controller] (http: // stackoverflow.com/questions/4940825/spoofing-a-game-controller) –

ответ

1

Взять данные с ПК и ничего не делать, кроме как передать его другому хосту.

Это нечувствительное с точки зрения USB. USB - это протокол на основе хоста: устройство никогда не будет отправлять данные, если хост сначала не запросит его. Имейте в виду, что «хозяин» и «устройство» имеют определенные значения здесь в самом протоколе; вы можете думать о «хозяине» как о хозяине и «устройстве» как о рабе. Эти роли выпекаются в USB-контроллер. Невозможно убедить стандартный USB-контроллер на любом ПК или периферийных устройствах менять роли. Существуют дополнительные платы для ПК, которые являются контроллерами USB-устройств (что делает ваш компьютер как устройство), но «дешевый» - это не слово, которое я бы использовал для их описания.

Что вы действительно пытаетесь сделать, это создать что-то, что является устройством USB для моста устройства. Итак, хорошо, вам нужно иметь два контроллера USB (2.0) (может быть, не так дорого, некоторые микрофоны уже имеют встроенные контроллеры). Тогда вы должны заставить их передать что-то значимое друг другу. Это очень сложно, потому что, как я уже упоминал выше, хосты должны сообщать устройству о передаче данных и отправлять данные на устройство всякий раз, когда захочет. Предполагая, что игровой контроллер отображается как HID-устройство (при условии, что консоль не прослушивает какой-то странный, настраиваемый дескриптор и использует какой-то странный, настраиваемый протокол), прерывающие каналы будут использоваться для передачи данных. Эта труба гарантированно будет опробована с минимальной скоростью. Таким образом, у вас есть консоль, запрашивающая данные с некоторой скоростью, которая не является фиксированной, и хост-как-геймпад, отправляющий данные с определенной скоростью. Это невозможно для синхронизации, поэтому вам понадобится какой-то приличный размер буфера в гаджете, который вы пытаетесь создать, что добавляет больше $$ и более сложной.

USB также довольно быстро. В высокоскоростном (USB2.0) кадры имеют длину 125 микросекунд. Это означает, что вы должны выполнять запросы на частоте около 8 кГц, что кажется медленным по сравнению с тактовой частотой микроконтроллера, но имейте в виду, что вы должны делать все остальное сразу. Я не уверен, есть ли микроконтроллер на уровне хобби, у которого будет все, что вам нужно, особенно тот, для которого вам не нужно катить свой собственный USB-накопитель.

+0

Да, это точка. Возможно, я недостаточно хорошо себя объяснил. Получив ответ на мой предыдущий вопрос, я прочитал на USB. Поэтому я знаю, что подключение двух хостов напрямую невозможно. Я ищу устройство, которое имеет как один, так и несколько контроллеров OTG + другой способ подключения к нему (Wifi/bluetooth/ethernet). Я считаю, что я * мог бы с этим справиться с помощью GuruPlug devkit (http://www.globalscaletechnologies.com/p-40-guruplug-display-devkit.aspx), но на данный момент это бюджет. (I «Я ищу что-то по цене 1/2), поэтому, я думаю, мне нужно будет приостановить его. –

+0

Зачем вам нужен другой способ подключения к нему? Wi-Fi/BT/Ether - довольно дорогие способы обойти это. Будет ли простой UART не достаточно быстрым? –

+0

Консоль (хост) <--- (OTG) Устройство (OTG) ---> (хост) ПК. Если устройство имеет только один OTG, то вам нужен интерфейс, который как ПК, так и устройство имеют для связи. Консоль (Host) <--- (OTG) устройств (Wi-Fi/Bluetooth/Ethernet) ---> PC (Wi-Fi/Bluetooth/Ethernet). В качестве альтернативы вы можете подключить клавиатуру/мышь к самому устройству, но это, как вы говорите, может потребовать значительного объема вычислительной мощности и памяти на самом устройстве. –

0

Вам понадобится $$$$ в оборудовании и $$$$$ в разработке, чтобы достичь того, чего вы себе представляете. Вы должны лучше сказать нам, что вы хотите подражать, и посмотрите here, если кто-то уже сделал это за вас. Если нет, то используйте библиотеку LUFA с некоторым большим USB-AVR, который может вести себя как USB-хост и подключить два из них (один как USB-гость, а другой как USB-хост) через какой-то другой протокол (I2C/SPI/UART).

1

Попробуйте этот чип -> FTDI 232 - это протоколы чипов, они будут транслировать данные на i2c, spi, serial, независимо от того, что хотите. приятно, легко и дешево :). У FTDI есть еще лучшие (vinculum), с otg и все, что нужно, но я бы начал с FTDI232. U просто нужно использовать ваш любимый uC, чтобы выполнить работу, которую хотите. ... с другой стороны, вам нужно сделать небольшую доску, возможно, какую-нибудь пайку, :). удачи!

Смежные вопросы