サイプレスタイトル - KBA229099 - Community Translated (JA)

Version 2

    Community Translated by  NoTa_4591161 Expert          Version: **

     

    Translation - English: Adding Communication Device Class Interface to FX3 Firmware - KBA229099

     

    質問1
    コミュニケーションデバイスクラス(CDC)インターフェイスをベンダークラスアプリケーションに追加するにはどうすればよろしいでしょうか?

     

    回答:
    すべてのUSBデバイスには、ホストにデバイス情報を記述するディスクリプタの階層があります一般的なUSBディスクリプタは次のとおりです。

    • デバイスディスクリプタ:USBデバイスディスクリプタには、適切なドライバーをロードするためのUSBバージョン、プロダクト、ベンダーID、およびデバイスで可能な構成の数などの情報が含まれています。
    • コンフィグレーションディスクリプタ:コンフィグレーションディスクリプタは、構成で使用される電力量、デバイスがバスパワーであるかセルフパワーであるか、インターフェイスの数などの値を指定します。
    • インターフェイスディスクリプタ:インターフェイスディスクリプタは、デバイスの単一の機能を実行する機能グループへのエンドポイントのヘッダーまたはグループ化である可能性があります。
    • エンドポイントディスクリプタ:エンドポイントディスクリプタは、エンドポイント0以外のエンドポイントを記述するために使用されます。ホストは、エンドポイント情報を使用して、バスの帯域幅要件を決定します。
    • インターフェイスアソシエーションディスクリプタ:インターフェイスアソシエーションディスクリプタを使用すると、デバイスは、機能に属するインターフェイスをグループ化できます。

     

    FX3ベンダークラスファームウェアへのCDCインターフェイスの追加

     

    FX3ベンダークラスファームウェアへのCDCインターフェイスの追加には、次のものが含まれます。

    • コンフィグレーションディスクリプタの変更
    • インターフェイスディスクリプタの変更
    • エンドポイントディスクリプタの変更
    • CDCリクエストの処理とCDC機能の追加

    コンフィグレーションディスクリプタの変更

     

    1. このディスクリプタとすべてのサブ・ディスクリプタの長さのフィールドをコンフィグレーションディスクリプタとすべてのインターフェイスディスクリプタの全長で修正します
    2. CDCインターフェイスを追加した後、インターフェイスの総数でインターフェイス数のフィールド更新し ます。

    1は、SDKでスレーブFIFOCDCインターフェイスを追加する例を示しています。

     

    1. スレーブFIFOへのCDCインターフェイスの追加

    1.png

    :これらの変更は、USB3.0SuperSpeedディスクリプタに適用されます。アプリケーションがUSB 2.0の場合は、ハイスピードディスクリプタにも同様の変更を加えることができます。

     

    インターフェイスディスクリプタの変更

     

    1. ディスクリプタのインターフェイス番号 フィールドは順番に並んでいる必要があります。

    この例では、スレーブFIFOインターフェイスインターフェイス番号 0x00であり、CDCインターフェースディスクリプタがスレーブFIFOインターフェースディスクリプタの後に追加される場合、CDCインターフェースの番号付けは次のようになります。

      • コミュニケーションインターフェースディスクリプタ– 0x01
      • データインターフェイスディスクリプタ– 0x02

     

    2.スレーブFIFOに使用されるインターフェイスのインターフェイスディスクリプタとエンドポイントディスクリプタの後に、CDCインターフェイスに関連するディスクリプタを追加します。CDC仕様に従って、CDCデバイスには2つのインターフェイス(コミュニケーションインターフェイスディスクリプタとデータインターフェイスディスクリプタ)が必要です。インターフェイスアソシエーションディスクリプタは、両方のCDCインターフェイスをバインドするために使用されます。そのバインドは最初のCDC i/FI/F番号とCD i/Fの数によって決定されます。

     

    2. インターフェイスアソシエーションディスクリプタの追加

    2.png

    エンドポイントディスクリプタの変更

     

    エンドポイントディスクリプタに変更はありません。各インターフェイスに使用されるエンドポイントアドレスとディスクリプションフィールドに記載されているエンドポイントアドレスが一意であることを確認してください。

    CDCリクエストの処理とCDC機能の追加

     

    ここで説明した変更により、UsbUartサンプルの機能がSDKのスレーブFIFOサンプルに追加されます。このナレッジベース記事(KBA)で利用可能なファームウェアで#define cdcを有効にすると、デフォルトのスレーブFIFOcyfxslfifosync.c)ファームウェアに次の変更が追加されます。

     

    1. CDCデバイス機能を処理するためのスレッドを作成します。

    2. USBセットアップコールバック関数で次のコミュニケーションデバイスクラス要求を処理します。

      • SET LINE CODING
      • GET LINE CODING
      • SET CONTROL LINE STATE

    3. UARTブロックとUSBブロック間の転送用のDMAチャネルを作成します。

    4. 作成したチャネルのエンドポイントを設定します。

    5. プロジェクトをビルドすると、{project_name} .imgファイルが生成され、それぞれのプロジェクトフォルダパスに保存されます。この.imgファイルでFX3をプログラムします。

    6. ドライバーのバインドが不適切なため、デバイスはコントロールセンターに表示されません。

     

    CDCインターフェイスが自動的にドライバーにバインドされる場合は、以下の手順に従って、ドライバーをslavefifo(ベンダー)インターフェイスに手動でバインドします。

    1. ファームウェアでFX3をプログラミングすると、ドライバーは正しくバインドされません。3は、不適切なドライバーバインディングのデバイスマネージャーを示しています。

    3. 不適切なドライバーのバインド

    3.png

     

     

    2. Cypress cyusb3ドライバーを正しくバインドするには、以前にバインドされたドライバーをアンインストールします。

     

    3. デバイスをリセットし、.imgファイルで再プログラムします。4は、再プログラミング後のデバイスマネージャーを示しています。

     

    4. FX3にバインドされたドライバーのアンインストール

    4.png

     

     

    4. デバイスマネージャーの[その他のデバイス]セクションに表示されるFX3cyusb3ドライバーをバインドします。モデルCypress FX3 USB StreamerExample Device選択します。ドライバーがFX3デバイスに正常にバインドすると、デバイスがコントロールセンターに表示されます。これで、スレーブFIFOに関連付けられたインターフェイスとCDCインターフェイスの両方のインターフェイスを同時に使用できます。ドライバーをFX3インターフェイスに強制的にバインドする方法の詳細については、ドライバーのバインドを参照してください。

     

    5. ドライバーを手動でバインドした後

    5.png

     

     

    CDCインターフェイスがドライバーに自動的にバインドされない場合、両方のインターフェイスが Other devicesセクションに表示される可能性があるため、それぞれのドライバーに手動でバインドする必要があります。

    6. 自動的にバインドされないCDCインターフェイス

    6.png

     

     

    正しいドライバーを両方のインターフェイスにバインドするには、デバイスマネージャーのデバイスプロパティをチェックして、両方のインターフェイスのクラスを確認します。

    6. デバイスのプロパティ
      7.png8.png

     

     

    値がクラスFF(ベンダクラス)の場合、 slavefifo(ベンダー)インターフェイスにcyusb3ドライバーをバインドするためには手順4に従います。

     

    値がクラス02CDCクラス)の場合、CDCインターフェイスにCypressドライバーをバインドするには、次の手順に従います。

    1. このリンクからCypressDriverInstaller_1.exeをダウンロードしてインストールします。デフォルトのインストール後、Cypress USB-Serial DriverフォルダーがC:\Program Files(x86)\Cypress作成されます。
    2. デバイスマネージャーで、 Other Devices [ FX3 ]を右クリックし、[ ドライバーソフトウェアの更新 ]をクリックします。
    3. ポップアップウィンドウで、[ コンピューターを参照してドライバーソフトウェアを検索 ]をクリックします。
    4. [ コンピューター上のデバイスドライバーのリストから選択]クリックします
    5. [ すべてのデバイス表示 ]を選択し、[ 次へ ]をクリックします。
    6. [ ディスク使用…]クリックします
    7. win7のために、x64PCは、ポップアップウィンドウで、参照を...クリックしC:\Program Files (x86)\Cypress\Cypress USB-Serial Driver\DriverBinary\CDC_Driver\bin\win7\x64に移動します。
    8. CypressSerial.infファイルを選択し、[ 開く ]をクリックします。
    9. [ OK ]クリックします。次のウィンドウで、[ USB to UART Adapter ] 選択し、[ 次へ ]をクリックします。
    10. ドライバーの更新警告ウィンドウで、[ はい ]をクリックします。これで、CDCインターフェイスの1つがデバイスマネージャーでUSB-UARTアダプターとして表示されます。

            これで、デバイスマネージャーのOther devicesセクションに別のデバイスの仮想シリアルポートが表示されます

    1. [ 仮想シリアルポート ]を右クリックし、[ ドライバーソフトウェアの更新 ] を選択します
    2. 手順38に行います。
    3. [ USB Serial Port ]を選択して、[ 次へ ]をクリックします。
    4. ドライバーの更新の警告ウィンドウで、[ はい]選択します。USBシリアルポート(COM x)(ここで、xは任意の数にすることができます)は、デバイスマネージャーのポート(COMおよびLPT)セクションに表示されます。これで、Uartターミナルアプリケーション(TeraTerm)とスレーブFIFOアプリケーションを開いて、CDCインターフェイスの同時動作を確認できます。

     

    CDCインターフェイスは、Windows 10 PCMicrosoftドライバーに自動的にバインドされ、ポート(COMおよびLPT)に表示されます。CDCインタフェイスはサイプレスドライバにバインドする場合は、USBシリアルポート(COM x)をクリックし、手順1-14に従ってください。

     

    質問2 UVCアプリケーションにコミュニケーションデバイスクラスインターフェイスを追加するにはどうすればよろしいでしょうか?

     

    CDCインターフェイスをUVCアプリケーションに追加するには、このスレッドに添付されているファームウェアを参照してください。

     

    ファームウェアはCX3アプリケーション用です。FX3デバイスのUVCアプリケーションについても、同様の変更を行う必要があります。