cancel
Showing results for 
Search instead for 
Did you mean: 

Community Translations

Esteemed Contributor

Hi,

I would like to translate KBA210620 into Japanese.

Thanks,

Kenshow

 

0 Likes
Reply
1 Reply
Esteemed Contributor

Original KBA:

Troubleshooting PSoC® 3, PSoC 4 L-Series, and PSoC 5LP USB Designs – KBA210620

Translated by Kenshow

==============================

タイトル:PSoC®3、PSoC 4Lシリーズ、およびPSoC 5LP USBデザインのトラブルシューティング –  KBA210620

バージョン:*B

このガイドは、PSoC 3PSoC 4 Lシリーズ、およびPSoC 5LPファミリに基づくUSBデザインで発生する可能性のある一般的な問題におけるトラブルシューティング手順を提供します。PSoCファミリデバイスでUSBを初めて使用する場合は、AN57294 - USB 101: An Introduction to Universal Serial Bus 2.0 から始めてください。

1. USB エニュメレーション問題

症状:ボードをPCなどのUSBホストに接続した後、USBデバイスがデバイスマネージャーに表示されません。

  • USBサブセクションハードウェアが適切に設計されていない:ボードのUSBハードウェアポート接続を次のように確認します
    • 22-Ω抵抗がD +およびD-ラインに直列に接続されていることを確認してください。
    • D +D-の線が逆になっていないことを確認します。
    • VDD3.3 V以上であることを確認してくださいVDD電源がこの電圧より低い場合、USBブロックは動作できません。正確な電圧仕様については、デバイスのデータシートを参照してください。
    • USBFS_Start() APIを呼び出してUSBコンポーネントをファームウェアで起動すると、D +ラインがHIGHになります。フルスピードデバイスの場合、USBデバイスの内部プルアップは1.5kΩで、ホスト側のプルダウンは15kΩです。したがって、デバイスがUSBポートに接続されており、ファームウェアのUSBコンポーネントが起動しているときのD +ラインの電圧レベルは、DDに近い必要があります。この動作が見られない場合は、ボード上のハードウェアの問題を示しています。
    • PSoC4L設計の場合、0.1μFのコンデンサをVBUSラインとグランドの間に追加する必要があります。テストには、PSoC Creatorで利用可能なコード例USBFS_HIDを使用します。HIDコード例を使用してPSoCデバイスをプログラムし、マウスポインターが動いているかどうかを確認します。HIDは特別なドライバーを必要としないため、プロジェクトは自動的に機能します。そうでない場合、問題はUSBポートの接続にあります。

  • ファームウェアで供給電圧が正しく設定されていない:USBFS_Start(uint8 device, uint8 mode) API関数でパラメーターとして提供されている電圧を確認してください。ボードに5 V電源が供給されている場合、引数モードUSBFS_5V_OPERATIONとして割り当てる必要があります。この場合、内部レギュレータが有効になります。ボード電源が3 Vの場合、マクロUSBFS_3V_OPERATION使用する必要があります。供給電圧が不明な場合、この場合は内部レギュレータが有効になっているため、USBFS_5V_OPERATIONを使用することをお勧めします。

  • ディスクリプタが適切に設定されていない:プロジェクトが機能している場合、ディスクリプタの設定に問題があることを示しています。USBデバイスがPSoC Creatorのコンポーネント構成ウィンドウで適切に設定されていることを確認してください。

  • グローバル割り込みが有効になっていないUSBFSコンポーネントを開始する前にCYGlobalIntEnableマクロを使用してグローバル割り込みが有効になっていることを確認してください。

  • Unplug- Replugイベントが処理されない:ボードにセルフ電源が入っている(USBポートから電源が供給されていない)場合、ボードがホストのUSBポートに接続されているかどうかに関係なく、ファームウェアは常に実行されます。ファームウェアに取り外しおよび再接続のイベントを検出する方法がない場合、USBコンポーネントは再起動されないため、エニュメレーションは行われません。ボードにセルフ電源が入っているときは、USBポートのVBUSラインを監視してUSBのプラグの抜き差しを検出し、USBデバイスのエニュメレーションに注意する必要があります。USBバスのVBUSラインに外部接続されているデジタル入力ピンを使用して、VBUSラインを監視します。  コードは、plug-unplugイベントの処理方法を示しています。

uint8 USB_Started_Flag    ;

for (;;)

{

    if (VBUS_MONITOR_PIN_Read() == 0)

    {

        USBFS_Stop();

        USB_Started_Flag = 0;

    }

    else if (USB_Started_Flag == 0 )

    {

        USBFS_Start(device, USBFS_3V_OPERATION );

    }

        /* ユーザーアプリケーションコード */

コード1接続/切断イベントを検出するための疑似コード

2.ドライバーのバインドの問題

症状:デバイスドライバーがインストールされていないというエラーメッセージが表示されます

 

Ø  .infファイル内のPIDの不一致:デバイスのPIDが、インストールされているドライバーのINFファイルで定義されているPIDと一致しない場合は、INFファイルを編集します。

一般的なUSBデバイスの場合、使用するINFファイルがあるcyusb.inf、インストールされている場合はCypress Suite USBをインストールしている場合はcyusb.infで、EZ-USB FX3 SDKがインストールされている場合はcyusb3.infになります。 インストールしたドライバースイートに基づいてINFファイルを見つけます。これらは .infファイルで、VID 0x04B4およびPIDのリストがあります。これらのPIDCypress VID 0x4B4のいずれかを使用している場合、これを.infファイルで示すことができます。.infファイルに存在しない別のPIDを使用している場合、.infファイルでこれを指すことはできません。この場合、.infファイルを変更する必要があります。

. infファイルを開き、OSに対応する「Device」セクションに、既存するVIDおよびPIDの詳細と同様に新しいPIDを含む行を追加します。同じく、「Strings」セクションに別の行を追加します。セクションの既存の行と同様に新しいVIDPIDを使用します。

カスタムPIDcyusb.infファイルの編集例については、ドキュメントAN65209- Getting Started with FX2LPの「Appendix E: Adding Custom VID and PID to the .inf file」セクションを参照してください。

重要:次の点に注意してください。

.infファイルを変更すると、ドライバーの署名が失われます。 最終製品では、ドライバーに署名する必要があります。一部のオペレーティングシステムでは、署名されていないドライバーをインストールできません。起動時にドライバー署名の強制が無効になっている場合、この問題は発生しません。

設計のトラブルシューティングを行うために、ドライバー署名の強制を無効にすることができます。Windows 7では、以下を実行します。

  1. 起動中にF8を押します。
  2. 表示されるオプションのリストから、「ドライバー署名の強制を無効にする」を選択します。

3. PSoCUSBUARTとして設定されている場合の問題

症状: PSoCデバイスでUSBCDCデバイスとして設定しました。COMポートとしてエニュメレートされていません。

Ø    USBUARTコンポーネントが使用されている場合、生成されたソースフォルダーに別の.infUSBUART_cdc.inf)ファイルが生成されます。 この.infは、Windowsシリアルドライバーを指します。 USBUARTデバイスを適切にエニュメレーションするには、デバイスマネージャーからこのファイルを指定する必要があります。

o    Open Device Manager and right-click on the device, and select Update Driver Software.

o    Choose Browse my computer for driver software > Let me pick from a list of device drivers on my computer > Have Disk.

o    Navigate to the project folder and select …/Generated_Source/<device>/USBUART_cdc.inf.

o    Click Next to point to the .inf file.

Ø    同じデバイスに複数のインターフェイスがある場合は、インターフェイスアソシエーションディスクリプタが必要です。アプリケーションノート AN58726 - USB HID Intermediate with PSoC® 3 and PSoC 5LPの「Compound and Composite Devices」セクションを参照してください。KBA223141では、IADの追加についても説明しています。

 

4. エンドポイント構成でのファームウェアの問題

症状:デバイスは正しくエニュメレートしますが、IN / OUTデータ転送が期待どおりに行われません。

Ø   エニュメレーション前のデータの転送:データ転送は、エニュメレーションプロセスの完了後にのみ実装する必要があります。ファームウェアは、USBFS_GetConfiguration() API関数がゼロ以外の値を返すまで待機する必要があります。次の擬似コードはこれを示しています。

USBFS_Start(USBFS_DEVICE, USBFS_5V_OPERATION);

while (0u == USBFS_GetConfiguration());

コード2 :デバイスがエニュメレートされるまで待機するための擬似コード

Ø   自動メモリモードでのDMA自動メモリ管理でDMAを使用している場合、最初にエンドポイント(EP)番号、バッファポインタ、および長さでINデータバッファとOUTデータバッファを登録する必要があります。ホストによって構成が設定された後、次のAPI関数を呼び出す必要があります。

USBFS_LoadInEP(IN_EP, &BufferIn[0],64);

USBFS_ReadOutEP(OUT_EP, &BufferOut[0],64);

コード3INおよびOUT EP初期化の疑似コード

これらの関数はデータ転送を開始しません。ここで、実際のIN転送のために、データポインターを 'NULL'としてUSBFS_LoadInEP() API関数を呼び出します。OUT転送では、API関数を呼び出す必要はありません。OUTデータは自動的にバッファに保存されます。さらにデータを受信するには、USBFS_EnableOutEP() API関数を呼び出してOUT EPを再度有効にする必要があります。

USBFS_LoadInEP(IN_EP, NULL, 64);  // EP読み取りデータ

USBFS_EnableOutEP(OUT_EP);    // OUTデータを読み取った後にOUT EPをクリアする

コード4 :自動メモリ管理モードでのDMAでの関数の使用

詳細については、AN56377 - PSoC 3 and PSoC 5LP - Introduction to Implementing USB Data Transfersのプロジェクト「Project 3: Increasing USB Throughput with DMA」を参照してください。

Ø     Windows 7OSのホストから複数の要求を処理: Windows 7OSは、同じ構成番号を持つ2つのSET_CONFIGURATIONリクエストを送信することができます。この場合、ユーザーレベルのコードは、各リクエスト後にOUTエンドポイントを再度有効にする必要があります。

USBFS_IsConfigurationChanged() API関数を呼び出して、PCからの構成変更を検出します。ゼロ以外の値を返す場合、USBFS_GetConfiguration() API関数が呼び出され、構成番号が取得されます。この使用モデルをコード5に示します。

if(USBFS_IsConfigurationChanged()!= 0)

{

if(USBFS_GetConfiguration()!= 0)

{

USBFS_EnableOutEP(OUT_EP);

}

}

コード5:メインループの使用モデルの疑似コード

Ø     最大ペイロードサイズのデータ​​パケットの処理:最大ペイロードサイズのデータ​​パケットを送信すると、問題が発生する可能性があります。Windows OSでは、データ転送が完了したことを示す短いパケットが必要です。そうでない場合、転送全体が完了したとは見なされません。詳細については、KBA89052を参照してください。

Ø     トグルエラー: USBハードウェアはデータトグルエラーをチェックせずにOUTパケットを受信します(受信パケットデータトグルビットは前のパケットと同じです)。ファームウェアはトグルビットエラーチェックを処理する必要があります。

5. USBアナライザー

USBアナライザーを使用したUSBパケットの分析は、問題が発生する正確な手順を特定するのに役立ちます。エニュメレーションまたは通常のデータ転送の問題の場合、USBパケットをチェックすると、問題の正確な場所がわかります。

USBプロトコルに違反があると、アナライザーはエラーをスローします。アナライザーは、USB転送タイプに基づいてデータパケットをグループ化します。1 エニュメレーション中の典型的なUSBパケットを示します。

pastedImage_274.png

1 Beagle USB480によってキャプチャされたUSB HIDデバイスのエニュメレーション

アプリケーションノートAN57294: USB 101: An Introduction to Universal Serial Bus 2.0参照してください。エニュメレーション手順とUSBアナライザの詳細については、セクション12USB Enumeration and Configuration 13Debugging the Communication それぞれ参照してください。

==============================

30-Apr-2020

Kenshow

0 Likes
Reply