Программируемый USB хост-хост-контроллер - PullRequest
1 голос
/ 09 февраля 2011

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

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

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

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

Ответы [ 3 ]

1 голос
/ 10 февраля 2011

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

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

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

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

1 голос
/ 22 марта 2011

Попробуйте этот чип -> FTDI 232 - это чипы протоколов, он будет переводить данные в i2c, spi, serial, как вам захочется.красиво, просто и дешево :).Фирма FTDI, есть даже лучшие (Vinculum), с OTG и всем, что вам нужно, но я бы начал с FTDI232.Вам просто нужно использовать ваш любимый ОК, чтобы делать работу, которую вы хотите.... с другой стороны, вы должны сделать небольшую доску, может быть, немного пайки, :).удачи!

0 голосов
/ 09 февраля 2011

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

...