FX3™/CX3ベースのUSB Type-C製品の設計 - KBA218460 - Community Translated (JA)

Version 4

    Community Translated by  JuIn_1625121 & keni_4440091       Version: **

     

     

    質問:

    FX3/CX3ベースのUSB Type-Cコネクタを使った製品の設計方法を教えてください。

     

     

    回答:

    USB Type-Cコネクタの顕著な特長は、それらがリバーシブルで、最大100Wの電力を供給できることです。つまり、USB Type-Cケーブルはどちら向き (上下逆) でも接続でき、またVBUS電圧は最大20V, 5Aです。リバーシブル接続を実現するために、USB Type-Cレセプタクルは、すべてのUSBデータライン (SuperSpeedHi-Speed) のペアを1つ多く持っています。USB Type-Cコネクタが挿入されている方向に基づき、マルチプレクサを使用して正しいUSBデータラインのペアを選択する必要があります。以下のセクションは、USB Type-C コネクタを使用した 3 タイプのFX3/CX3設計について説明します。Type-C コネクタと USB Power Delivery の詳細については、USB Type-C 仕様書 USB Power Delivery 仕様書を参照してください。以下のセクションは、FX3 および CX3 ファミリのデバイスに適用されます。

     

     

    1. FX3 Type-Cプラグの設計

    このType-Cプラグの設計は、5VVBUS電圧と3A以下の電流を必要とする標準的なデバイス(RAIDドングル、フラッシュドライブなど) に適しています。このような設計の場合、USB-PD (Power Delivery) コントローラは必要ありません。Type-Cプラグと FX3 を使用するアプリケーションでは、USB ホストが正しい接続を処理できるため、正しいペアの USB データラインを選択するためのマルチプレクサは必要ありません。FX3ベースのUSB Type-Cプラグ設計のサンプル回路図を図1に示します。デバイスが電力のコンシューマ側 (power sink) で、5V3A以下のVBUSが必要であることを示すために、プラグのコンフィギュレーション チャンネル (CC) ラインには5.1KΩのプルダウン抵抗 (Rd) が必要です。デフォルトでは、ホストはType-C5V, 3Aを提供するため、USB Type-Cプラグベースの設計を使用する際には、追加のPower DeliveryコントローラまたはFX3でのファームウェアの追加実装は必要ありません。アプリケーションが他の電圧/電流を必要とする場合は、PDコントローラが必要です。詳細はセクション3を参照してください。

     

    1. FX3 Type-Cプラグ設計の回路図

     

    2. FX3 Type-Cレセプタクルの設計

    カメラモジュール、ドック、モニターなどのデバイスは、Type-Cレセプタクルで設計されます。これらはType-Cケーブルを介してUSB Type-Cホストに接続されます。USB Type-Cレセプタクルを使用するアプリケーションでは、USBホストと通信するUSB SuperSpeedデータラインの正しいペアをType-Cコネクタの向きに応じて選択するために、マルチプレクサが必要です。コネクタの向きに基づいてUSBデータラインの正しいペアを選択するために、論理的に向きを決定する仕組みが実装され、マルチプレクサが動作するための入力が必要です。

     

    USB Type-Cの仕様は、デフォルトでは、USB Power Deliveryを含まず、VBUSを介して最大5V, 3Aの電力伝送に対応します。5V3A以上の電流を必要としないアプリケーションでは、USB Power Deliveryコントローラ チップは必要ありません。このような場合には、FX3だけでマルチプレクサのSELラインを制御して、USB 3.1 SuperSpeedラインの正しいペアを選択できます。FX3は、堅牢なSDKに対応する強力なARM®コアをとおして、この実装を可能にします。USB Type-Cレセプタクルとマルチプレクサを使ったUSB接続のサンプル回路図を図2に示します。マルチプレクサを制御するためのFX3ファームウェアの実装については、サイプレスのテクニカル サポートに連絡してください。

     

     

    2. FX3 Type-Cレセプタクル設計の回路図

     

    図2に示すように、USB Type-Cレセプタクルからの各USBデータラインの2組のペアがマルチプレクサに接続されています。マルチプレクサからは、1組のペアのUSBデータラインがFX3に接続されています。MUXSEL ラインは FX3 の出力 GPIO を介して制御され、USB SuperSpeed ラインの正しいペアを選択します。USB SuperSpeed ラインの正しいペアを選択するロジックは FX3 ファームウェアに実装されています。

     

     

    3. PDコントローラ付きFX3 Type-Cレセプタクル設計

    5V,3A以外の電圧/電流を必要とするアプリケーションでは、Type-C PDホストと電力値をネゴシエートするためにUSB Power Delivery (PD) コントローラが必要です。PDコントローラ チップはマルチプレクサを制御し、USB SuperSpeedデータラインの正しいペアを選択します。PDコントローラがUSB Type-CおよびPD関連の要求を処理するため、FX3側ではファームウェアの実装は必要ありません。サイプレスのFX3EZ-PD CCG2 コントローラ チップを使用した参考回路図を本記事に添付します。ファームウェアについては、サイプレスのテクニカル サポートに連絡してください。

     

    コメント部:

    2. FX3 Type-C レセプタクルの設計(PDなし)の場合は、以下の手順でFX3ファームウェアにマルチプレクサ制御を実装してください。

     

    1) USB2のサポートを無効にします。

    2) 最初の USB3 ペアを使用して USB3 接続の確立を試してください。

    3) CY_U3P_USB_EVENT_SS_COMP_ENTRYCY_U3P_USB_EVENT_USB3_LNKFAILをチェックします。

    2つのイベントのいずれかが発生した場合は、以下のようにしてください。

    a) CyU3PConnectState(CyFalse, CyFalse)を使用してUSB PHYを無効にしてください。

    b) マルチプレクサ選択用GPIOをトグルしてください。

    c) USB 2.0 サポートを有効にしてください。

    d) connectstate API を呼び出して、2番目のペアを使用してUSB 3.0接続を確立してください。

     

    下記にプログラムコードの例を示します。

    status = CyU3PUsbControlUsb2Support(CyFalse);

      if (status != CY_U3P_SUCCESS)

      {

    CyU3PDebugPrint(4,"\r\nDisabling USB2 failed. Stopping Execution");

        while(1);

      }

     

     

      CyU3PThreadSleep(20);

     

     

      status = CyU3PConnectState(CyTrue, CyTrue);

      CyU3PThreadSleep(50);

      for(int i =0 ; (i<100 && !U3_EVENT); i++ )

      CyU3PThreadSleep(5);

     

     

      if(!U3_TRUE)

      {

      CyU3PDebugPrint(5,"\r\nNot Super speed enumeration with MUX_SEL low. Flipping Mux to try again");

    CyU3PConnectState(CyFalse, CyFalse);

    CyU3PGpioSetValue(SS_MUX_SEL_GPIO22,CyTrue);

    CyU3PUsbControlUsb2Support(CyTrue);

      CyU3PThreadSleep(20);

      status = CyU3PConnectState(CyTrue, CyTrue);

      CyU3PThreadSleep(50);

      if (status != CY_U3P_SUCCESS)

      {

    CyU3PDebugPrint (4, "\n\rAppInit:ConnectState Err = 0x%x", status);

    CyCx3UvcAppErrorHandler(status);

      }

     

     

      }

      else

      {

      CyU3PDebugPrint(5,"\r\nSuper speed enumeration with MUX_SEL low");

      }