Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

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

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

GeethaP_31
Employee
Employee
50 questions asked 10 questions asked 5 questions asked

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);

0 件の賞賛
211 件の閲覧回数
寄稿者