2017-03-17 32 views
0

私はUSBで新しいです。USBでCDCとHIDクラスを同時に使用できますか?

ポインティングデバイスをPICマイクロコントローラに実装したいと考えています。 USBは、ポインティングデバイスとホストとの間の通信に使用される。

私は、次の操作を実行したいと思います:

  1. デバイスはすぐにプラグインした後、簡単なマウスとして機能することができるように、ホストのHIDクラスドライバにデルタを送信します。

  2. CDCクラスを使用してホストに他のデータを送信し、ユーザー空間上で実行されるアプリケーションによって後処理されるようにします。

私の主な質問は以下のとおりです。

  • これを実施するための最良の方法は何ですか? 2つの異なるインタフェースを定義する必要がありますか?

  • 定義する必要がある記述子は?

私は、次のことを考えています:

Device descriptor 
Config descriptor 

Interface 0 descriptor 
Functional descriptors 
EP descriptor 

Interface 1 descriptor (CDC) 
EP descriptors 

Interface 2 descriptor (HID) 
EP descriptors 

どのように私は、インターフェイス0の記述子の後に行く「機能記述子」を定義する必要がありますか?インターフェイス1と2をインターフェイス0のスレーブとして定義する必要がありますか?

+2

あなたは、複合デバイスを実装する必要があります。おそらく、Arduino Leonardoを入手し、Arduino Mouseライブラリを使用してその動作を確認するとよいでしょう。これは、CDCシリアルポートとマウスを同時に実装します。 Linuxコンピュータ上で 'lsusb'を使って、そのディスクリプタを詳細にリストすることができます。 –

答えて

0

2つのインターフェイスタイプに2つの異なるインターフェイスを実装する必要があります。 インターフェイス記述子と(エンドポイント記述子)を理解するには、CDCおよびHIDの仕様を理解する必要があります。

私は「スレーブインターフェース」という単語を理解できませんでした。代わりのインターフェイスを意味しましたか? 代替インターフェイスは必要ありません。

複数のインターフェイスの例については、画像を参照してください。

enter image description here

おかげ

関連する問題