5 Replies Latest reply on May 28, 2019 11:56 PM by HirotakaT_91

    デバイスマネージャでの認識

    user_3987996

      基板上のCYUSB3014が3個が基板上のUSB HUBに繋がっており、USBケーブルで

      PCと接続されています。

       

      2個のCYUSB3014はプログラムを動作させると、デバイスマネージャでFX3と認識

      されるのですが、1個だけ USB ビデオデバイスとして認識されます。

       

      同じプログラムでなぜこのような事がおこるのでしょうか?

       

      又、ICの見分けがつくように名前を変えたいのですが、何処をどの様に変更したら

      いいのでしょうか?

        • 1. Re: デバイスマネージャでの認識
          HirotakaT_91

          状況確認のために、以下を教えてください。

          USBビデオクラスとして表示されているFX3は、VIDとPIDはどのように表示されていますか?

          ドライバは何がバインドされていますか?

           

           

           

          多く情報をご提供いただければ解決が早くなります。

           

           

          表示されているFX3がそれぞれどのFX3を指しているのか確認する方法についてですが、Serial numberを使用するのはいかがでしょうか。

          Distinguishing Different FX3 Devices with Same VID/PID on Host Application – KBA225775

           

          よろしくお願い致します。

          Hirotaka Takayama

          • 2. Re: デバイスマネージャでの認識
            user_3987996

            FX3で認識されるものとUSB VIDEO DEVICEで認識されるもののプロパティの情報を添付します。

             

            他のスレッドでも書きましたが、基板上にUSBのHUBのICとCYUSB3014が3個基板上に載っています。

             

            USB Boot Loaderでプログラムを書き込むのは問題ないのですが、3個のCYUSB3014が右、中央、左と

            あるとして、PCアプリ側から右,中央,左が必ず認識できるようにする必要があります。

            出来れば、一つのプログラムで認識を分ける方法はありますでしょうか?

            • 3. Re: デバイスマネージャでの認識
              user_3987996

              Serial numberを使用する場合、デバイスマネージャー等でどのように認識できるのでしょうか?

              • 4. Re: デバイスマネージャでの認識
                user_3987996

                カメラのプロパティを比べたら、USB VIDEO DEVICEと認識されているものだけ

                フレンドリ名の項目が無い事がわかりました。

                • 5. Re: デバイスマネージャでの認識
                  HirotakaT_91

                  ★ファームウェアの書き込みに関して

                  以下の条件を満たしたいということでしょうか?認識違いがあれば教えてください。

                   

                  ・書き込みに使う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