残念ながら、答えはそれほど単純ではありません。
リンクされたデータシートと関連ドキュメントによると、TUSB3410 は固定機能デバイスではありません。基本的には、片側が USB デバイス、反対側が UART、中央が MCU アプリケーション プロセッサです。そのチップが有用なことを行うためには、データが一方から他方へどのように移動するかを制御するために、ファームウェア アプリケーションをチップにロードする必要があります。そのため、データが USB を介してどのように移動するか (割り込み転送、一括転送など) をファームウェアで定義し、それによって Android アプリケーションが USB とやり取りする方法を制御できます。
また、チップはファームウェアの焼き付けをサポートしていないようで、常に I2C EEPROM または USB ホストから外部でファームウェアをロードします。デバイスのセットアップに EEPROM がまだ含まれていない場合、Android USB API はエニュメレーション プロセス中にアプリケーションにデバイスへのアクセスを実際には与えないため、困難な時間がかかる可能性があります。ホストからダウンロードされた場合に送信されます。また、デバイスを 2 回検出する必要があります (1 回目は標準のブートコード VID/PID で、もう 1 回はファームウェア ファイルが引き継ぎ、デバイスがバスに再接続した後)。
UART、SPI などのデータを Android アプリケーションに取得するための単純な組み込み実装を探しているだけの場合は、オープン アクセサリ プロトコルを実装し、ライブラリ コードが付属している FTDI FT311 のようなものを使用することをお勧めします。方程式の両側から開始: http://www.ftdichip.com/Products/ICs/FT311D.html
編集:あなたのコメントから
そのため、デバイスが CDC USB デバイス クラスに準拠している場合、基本的に 3 つのポイントがあります。
- すべてのデバイスには構成用の「エンドポイント 0」があり、
controlTransfer()
メソッドを使用して Android API でこれにアクセスします。CDC デバイスは、このエンドポイントを使用して、ボーレート、ストップ ビットなどの項目を変更します。
- VCP のような CDC デバイスには、通信用とデータ用の 2 つのインターフェイスがあります。データ インターフェイス (通常は 2 番目に列挙) には、シリアル データが通常転送される 2 つのバルク エンドポイント (1 つは入力、もう 1 つは出力) があります。
bulkTransfer()
メソッドを使用するか、非同期を使用して、これらのエンドポイントでデータをやり取りできますUsbRequest
。
出発点として、ホスト API を使用して CDC の基本を実装するこのオープン ソース プロジェクトのソースを見てください。そこから独自のドライバー (具体的には CdcAcmSerialDriver) をロールする方法を理解できるはずです。
http://code.google.com/p/usb-serial-for-android/