2011-02-09 15 views
1

this質問に加えて、まだ完全にプログラム可能な状態で2つのUSBホストを接続できるデバイスを探しています。ホストコントローラへのプログラマブルUSBホスト

は、PCからの入力を取ると何もしないが、他のホストにそれを渡す任意のUSBデバイスとして

マスカレード:私は、次の操作を行うことができる何かをしたいと思います。

私はこれを行うことを可能にするマイクロコントローラ(好ましくは予め組み立てられたもの)を探していましたが、これまで空白になっています。誰もが私にこれを可能にするコントローラ(安いことが望ましい)を知っていますか?

+0

[ゲームコントローラのなりすまし](http:// stackoverflow。com/questions/4940825/spoofing-a-game-controller) –

答えて

1

PCから入力を受け取り、他のホストに渡すだけで何もしません。

これはUSBの観点からは非センシティブです。 USBはホストベースのプロトコルです。ホストが最初にデータを要求しない限り、デバイスはデータを送信しません。ここでは、「ホスト」と「デバイス」はプロトコル自体の中で具体的な意味を持ちます。 「ホスト」をマスター、「デバイス」をスレーブと考えることができます。これらの役割は、USBコントローラに焼き付けられます。任意のPCまたは周辺機器の標準USBコントローラをスワップロールに納得させる方法はありません。 USBデバイスコントローラであるPC用のアドインカードがあります(あなたのPCをデバイスとして動作させる)が、「安い」は私がそれらを記述するために使用する言葉ではありません。

あなたが実際にやろうとしていることは、デバイスブリッジへのUSBデバイスであるものを作成することです。だから、2つのUSB(2.0)デバイスコントローラを用意する必要があります(高価ではないかもしれませんし、マイクロコントローラの一部にはすでにコントローラを用意しておく必要があります)。それから、お互いに意味のあるものを渡すようにしなければなりません。上記のように、ホストはデバイスにデータを送信するように指示し、必要なときにいつでもデバイスにデータを送信できるため、これは本当に難しいです。ゲームコントローラがHIDデバイスとして表示されていると仮定すると(コンソールが奇妙なカスタムディスクリプタをリッスンせず、奇妙なカスタムプロトコルを使用していると仮定して)、割り込みパイプを使用してデータを転送します。このパイプは、最低レートでポーリングされることが保証されています。したがって、コンソールは一定の速度でデータを要求しますが、これは固定されておらず、ある時点でデータを送信するホストとしてのゲームパッドもあります。それは2つが同期することは不可能になるので、作成しようとしているガジェットにはある程度の大きさの適切なバッファが必要です。これは$$以上の複雑さを追加します。

USBもかなり高速です。高速(USB2.0)では、フレームの長さは125マイクロ秒です。つまり、マイクロコントローラのクロック速度と比較して遅い約8KHzで要求を完了する必要がありますが、他のすべてを一度に行う必要があることに注意してください。あなたが必要とするすべてのもの、特に独自のUSBスタックを動かす必要がないものを持っている趣味のレベルのマイクロコントローラがあるかどうかはわかりません。

+0

はい、それがポイントです。おそらく私は十分に自分自身を説明しなかった。私の以前の質問に対する回答を受けて、私はUSBで読んだ。だから、2つのホストを直接接続することは不可能です。私は、1つ以上のOTGコントローラ+それに接続する他の方法(Wifi/Bluetooth /イーサネット)の両方を備えたデバイスを探しています。私はGuruPlug devkit(http://www.globalscaletechnologies.com/p-40-guruplug-display-devkit.aspx)を使って私がそれを取り除くことができるかもしれないと信じていますが、今は予算を超過しています1/2価格で何かを探している)、私はそれを保留にする必要がありますね。 –

+0

なぜ他の方法で接続する必要がありますか? Wifi/BT/Etherはかなり高価な方法です。プレーンなUARTは十分速くないでしょうか? –

+0

コンソール(ホスト)<---(OTG)デバイス(OTG)--->(ホスト)PC。デバイスに1つのOTGしかない場合は、PCとデバイスの両方が通信するためのインターフェイスが必要です。コンソール(ホスト)<---(OTG)デバイス(Wifi/Bluetooth/Ethernet)---> PC(Wifi/Bluetooth/Ethernet)。また、キーボード/マウスをデバイス自体に接続することもできますが、デバイス自体にかなりの処理能力とメモリを必要とする可能性があります。 –

0

あなたが想像していることを実現するためには、$$$$の機器と$$$$$の開発作業が必要になります。エミュレートするものを教えてください。他の人が既にあなたのために作っている場合は、hereを見てください。そうでなければ、USBホストとして動作し、他のプロトコル(I2C/SPI/UART)を介してそれらのうちの2つ(USBゲストとして、そしてもう1つはUSBホスト)を接続する、より大きなUSB AVRでLUFAライブラリを使用してください。

1

このチップを試してください - > FTDI 232プロトコルチップですが、i2c、spi、serial、任意のものをデータに変換します。素敵で、簡単で安い:)。 FTDIの会社は、より良いもの(vinculum)を持っていて、必要なものはすべて持っていますが、私はFTDI232から始めます。あなたが好きな仕事をするためにあなたの好きなuCを使うだけです。 ...一方、小さなボード、多分いくつかのはんだ付けをしなければなりません:)。がんばろう!

関連する問題