USB 3.0アプリケーションでのみFX3を有効にする – KBA219491 - Community Translated (JA)

Version 1

    Community Translated by  NoTa_4591161 Expert         Version: **

     

    Translation - English: Enabling FX3 Only for USB 3.0 Applications – KBA219491

     

    質問:

    FX3デバイスでUSB 3.0機能のみをどのように有効にしますか?

     

    回答:

    USB 3.0は、スーパースピードライン(SS_TX_PSS_TX_MSS_RX_PSS_RX_M)とハイスピードライン(DMおよびDP)の両方で構成されています。一部のデザインでは、USB 3.0モードのみでFX3デバイスを使用する場合があります。つまり、FX3はスーパースピードラインのみを使用し、別のコントローラーはハイスピードラインを使用します。たとえば、サイプレスUSB 3.0ハブコントローラーCYUSB3328およびCYUSB3326には、SharedLink 機能を備えております。これにより、USB 3.0ポートを組み込みのスーパースピードラインポートと標準のUSB 2.0ポートに分割できます。FX3を組み込みUSB 3.0ポートに接続するには、USB 3.0でのみ動作し、USB 2.0にフォールバックしないようにプログラムする必要があります。これが役立つ可能性があるSharedLink以外のアプリケーションが存在する可能性があります。この記事では、FX3アプリケーションファームウェアでUSB 3.0機能のみを有効にする実装について説明します。

     

    FX3のブートオプションについては、AN76405記載しておりますFX3PMODE [20] = Z11を介してUSBブートオプション用に設定されている場合、それはサイプレスUSBブートローダーデバイスとして表示され、USB 2.0モードでのみ操作できます。組み込みの超高速ポートに関連付けられたD+/D-がないため、ホストでFX3を検出できません。このシナリオでは、USBを介してFX3にアプリケーションファームウェアをプログラムできません。したがって、USBの代わりに他のブートオプションを使用する必要があります。

     

    ブートオプション、USBフォールバックを使用したI2CブートとUSBフォールバックを使用したSPIブートを使用するときは注意してください。これらの起動オプションでは、FX3は次のシナリオでUSB 2.0ブートローダーデバイスとして表示されます。

    • I2CまたはSPIアドレスサイクルまたはデータサイクルエラー
    • FX3ファームウェアイメージの無効な署名
    • 無効な画像タイプ

     

    CyU3PUsbStart API を使用してUSBデバイスモードドライバーを起動し、USBコールバック要求とUSB記述子をUSBドライバーに登録した後、アプリケーションファームウェアで次の手順に従って、FX3USB 3.0のみの機能を有効にします。

         1. CyU3PConnectState APIを呼び出す前に、CyU3PUsbControlUsbSupport APIを使用してUSB 2.0接続を無効にします。

         2. CyU3PConnectState APIを繰り返し呼び出して、障害が発生した場合にUSB 3.0接続を再試行します。これらのAPIの詳細については、FX3 APIガイドを参照してください。ステップのコードスニペットは次のとおりです。


    /* USB 2.0接続を無効にします */
    CyU3PUsbControlUsb2Support(CyFalse);
    do
    {
    /* 超高速動作を有効にしてUSBピンを接続します。 */
    apiRetStatus = CyU3PConnectState(CyTrueCyTrue);
    if(apiRetStatus != CY_U3P_SUCCESS)

    {

    CyU3PDebugPrint(4, "USB Connect failedError code =%d \n", apiRetStatus);
    }

    else

    {

    CyU3PDebugPrint(4, "USB Connect passed, Error code = %d\n", apiRetStatus);

    }

    } while(apiRetStatus != CY_U3P_SUCCESS);