- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
基板上のCYUSB3014が3個が基板上のUSB HUBに繋がっており、USBケーブルで
PCと接続されています。
2個のCYUSB3014はプログラムを動作させると、デバイスマネージャでFX3と認識
されるのですが、1個だけ USB ビデオデバイスとして認識されます。
同じプログラムでなぜこのような事がおこるのでしょうか?
又、ICの見分けがつくように名前を変えたいのですが、何処をどの様に変更したら
いいのでしょうか?
解決済! 解決策の投稿を見る。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
★ファームウェアの書き込みに関して
以下の条件を満たしたいということでしょうか?認識違いがあれば教えてください。
・書き込みに使うFX3のファームウェア(imgファイル)は1つだけにしたい(同じファームウェアを3つのFX3に書き込みたい)
・書き込みを行うホストアプリケーション(ソフト)は自社で開発される
・書き込みを行う際には接続されているどのFX3がどれかをホストアプリケーション側で認識したい
・書き込み後、デバイスマネージャー等で表示されるFX3の名前をそれぞれ見分けがつくようにしたい
あいにくですが、1つのimgファイルで異なる名称は定義できません。
デバイスインスタンスパスで固有の名称を表示するために、以下のようにファームウェアの変更をします。
以下の例では、SerialNumberを変更することで、デバイスインスタンスパス上に"FX3R"と表示します。AN75779に変更を加えることを前提としています。
1. cyfxuvcdscr.c (Device Descriptor, String Descriptor)の編集 |
---|
/* Standard Device Descriptor */ const uint8_t CyFxUSBDeviceDscr[] = { 0x12, /* Descriptor Size */ CY_U3P_USB_DEVICE_DESCR, /* Device Descriptor Type */ 0x10,0x02, /* USB 2.0 */ 0xEF, /* Device Class */ 0x02, /* Device Sub-class */ 0x01, /* Device protocol */ 0x40, /* Maxpacket size for EP0 : 64 bytes */ 0xB4,0x04, /* Vendor ID */ 0xF8,0x00, /* Product ID */ 0x00,0x00, /* Device release number */ 0x01, /* Manufacture string index */ 0x02, /* Product string index */ 0x03, /* Serial number string index */ 0x01 /* Number of configurations */ }; /* Device Descriptor for SS */ const uint8_t CyFxUSBDeviceDscrSS[] = { 0x12, /* Descriptor Size */ CY_U3P_USB_DEVICE_DESCR, /* Device Descriptor Type */ 0x10,0x03, /* USB 3.10 */ 0xEF, /* Device Class */ 0x02, /* Device Sub-class */ 0x01, /* Device protocol */ 0x09, /* Maxpacket size for EP0 : 2^9 Bytes */ 0xB4,0x04, /* Vendor ID */ 0xF9,0x00, /* Product ID */ 0x00,0x00, /* Device release number */ 0x01, /* Manufacture string index */ 0x02, /* Product string index */ 0x03, /* Serial number string index */ 0x01 /* Number of configurations */ }; ..... String Descriptorの追加 const uint8_t CyFxUSBSerialNumberDscr[] = { 0x0A, /* Descriptor size */ CY_U3P_USB_STRING_DESCR, /* Device descriptor type */ 'F',0x00, 'X',0x00, '3',0x00, 'R',0x00 }; |
2. uvc.h (Header file)への追記 |
---|
extern const uint8_t CyFxUSBSerialNumberDscr[]; /* Serial number descriptor*/ |
3. uvc.cでString Descriptorをセット |
---|
/* CyFxUVCApplnInit()内で以下を記述 */ CyU3PUsbSetDesc (CY_U3P_USB_SET_STRING_DESCR, 3, (uint8_t *)CyFxUSBSerialNumberDscr); |
関連スレッドとして、CDC classでの編集ですが、以下のスレッドが参考になります。
CX3 UVC-CDC - Identifying the CDC COM port
ホストアプリケーション側でSerialNumberをベースに識別する際には"CyAPI.pdf / CyUSB.NET.pdf"のSerialNumberの項目等をご参照ください。
あとはMicrosoftのsetupapiなどが役立つかと思いますが、これについてはMicrosoftに聞いてください。
★USB VIDEO DEVICEと表示される件について
デバイスに関する情報のご提供ありがとうございます。
Friendly Nameの項目が空欄だったためにUSB VIDEO DEVICEと表示されたということですね。
Friendly Nameを適切に入れて解決された、ということでしょうか?
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
状況確認のために、以下を教えてください。
USBビデオクラスとして表示されているFX3は、VIDとPIDはどのように表示されていますか?
ドライバは何がバインドされていますか?
多く情報をご提供いただければ解決が早くなります。
表示されているFX3がそれぞれどのFX3を指しているのか確認する方法についてですが、Serial numberを使用するのはいかがでしょうか。
Distinguishing Different FX3 Devices with Same VID/PID on Host Application – KBA225775
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
FX3で認識されるものとUSB VIDEO DEVICEで認識されるもののプロパティの情報を添付します。
他のスレッドでも書きましたが、基板上にUSBのHUBのICとCYUSB3014が3個基板上に載っています。
USB Boot Loaderでプログラムを書き込むのは問題ないのですが、3個のCYUSB3014が右、中央、左と
あるとして、PCアプリ側から右,中央,左が必ず認識できるようにする必要があります。
出来れば、一つのプログラムで認識を分ける方法はありますでしょうか?
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
Serial numberを使用する場合、デバイスマネージャー等でどのように認識できるのでしょうか?
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
カメラのプロパティを比べたら、USB VIDEO DEVICEと認識されているものだけ
フレンドリ名の項目が無い事がわかりました。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
★ファームウェアの書き込みに関して
以下の条件を満たしたいということでしょうか?認識違いがあれば教えてください。
・書き込みに使うFX3のファームウェア(imgファイル)は1つだけにしたい(同じファームウェアを3つのFX3に書き込みたい)
・書き込みを行うホストアプリケーション(ソフト)は自社で開発される
・書き込みを行う際には接続されているどのFX3がどれかをホストアプリケーション側で認識したい
・書き込み後、デバイスマネージャー等で表示されるFX3の名前をそれぞれ見分けがつくようにしたい
あいにくですが、1つのimgファイルで異なる名称は定義できません。
デバイスインスタンスパスで固有の名称を表示するために、以下のようにファームウェアの変更をします。
以下の例では、SerialNumberを変更することで、デバイスインスタンスパス上に"FX3R"と表示します。AN75779に変更を加えることを前提としています。
1. cyfxuvcdscr.c (Device Descriptor, String Descriptor)の編集 |
---|
/* Standard Device Descriptor */ const uint8_t CyFxUSBDeviceDscr[] = { 0x12, /* Descriptor Size */ CY_U3P_USB_DEVICE_DESCR, /* Device Descriptor Type */ 0x10,0x02, /* USB 2.0 */ 0xEF, /* Device Class */ 0x02, /* Device Sub-class */ 0x01, /* Device protocol */ 0x40, /* Maxpacket size for EP0 : 64 bytes */ 0xB4,0x04, /* Vendor ID */ 0xF8,0x00, /* Product ID */ 0x00,0x00, /* Device release number */ 0x01, /* Manufacture string index */ 0x02, /* Product string index */ 0x03, /* Serial number string index */ 0x01 /* Number of configurations */ }; /* Device Descriptor for SS */ const uint8_t CyFxUSBDeviceDscrSS[] = { 0x12, /* Descriptor Size */ CY_U3P_USB_DEVICE_DESCR, /* Device Descriptor Type */ 0x10,0x03, /* USB 3.10 */ 0xEF, /* Device Class */ 0x02, /* Device Sub-class */ 0x01, /* Device protocol */ 0x09, /* Maxpacket size for EP0 : 2^9 Bytes */ 0xB4,0x04, /* Vendor ID */ 0xF9,0x00, /* Product ID */ 0x00,0x00, /* Device release number */ 0x01, /* Manufacture string index */ 0x02, /* Product string index */ 0x03, /* Serial number string index */ 0x01 /* Number of configurations */ }; ..... String Descriptorの追加 const uint8_t CyFxUSBSerialNumberDscr[] = { 0x0A, /* Descriptor size */ CY_U3P_USB_STRING_DESCR, /* Device descriptor type */ 'F',0x00, 'X',0x00, '3',0x00, 'R',0x00 }; |
2. uvc.h (Header file)への追記 |
---|
extern const uint8_t CyFxUSBSerialNumberDscr[]; /* Serial number descriptor*/ |
3. uvc.cでString Descriptorをセット |
---|
/* CyFxUVCApplnInit()内で以下を記述 */ CyU3PUsbSetDesc (CY_U3P_USB_SET_STRING_DESCR, 3, (uint8_t *)CyFxUSBSerialNumberDscr); |
関連スレッドとして、CDC classでの編集ですが、以下のスレッドが参考になります。
CX3 UVC-CDC - Identifying the CDC COM port
ホストアプリケーション側でSerialNumberをベースに識別する際には"CyAPI.pdf / CyUSB.NET.pdf"のSerialNumberの項目等をご参照ください。
あとはMicrosoftのsetupapiなどが役立つかと思いますが、これについてはMicrosoftに聞いてください。
★USB VIDEO DEVICEと表示される件について
デバイスに関する情報のご提供ありがとうございます。
Friendly Nameの項目が空欄だったためにUSB VIDEO DEVICEと表示されたということですね。
Friendly Nameを適切に入れて解決された、ということでしょうか?
よろしくお願い致します。
Hirotaka Takayama