USBエニュメレート中のFX3 SDKからのCY_U3P_USB_EVENT_LMP_EXCH_FAILイベントの処理 - KBA225778 - Community Translated (JA)

Version 1

    Community Translated by NoTa_4591161 Expert        Version: **

     

    Translation - English: Handling CY_U3P_USB_EVENT_LMP_EXCH_FAIL Event from FX3 SDK during USB Enumeration - KBA225778

     

    質問:

    FX3 SDKからのUSBエニュメレート中にCY_U3P_USB_EVENT_LMP_EXCH_FAILイベントを処理する方法を教えて下さい。

     

    回答:

    FX3 SDK は、ホストからのポート機能要求またはポート設定要求のいずれかがタイムアウトになると、CY_U3P_USB_EVENT_LMP_EXCH_FAILイベントをユーザーアプリケーションに通知します。サイプレスは、このイベントを処理している間、ユーザーアプリケーションでUSBインターフェイスブロックの再起動を推奨しております。

     

    次の手順は、サンプルアプリケーションプロジェクトのイベントを処理する方法を示しています。

    1. USBイベントコールバックを構成して、CY_U3P_USB_EVENT_LMP_EXCH_FAIL イベントの受信時にカスタムフラグCY_FX_USB_RESTART_EVT_FLAG をメインアプリケーションイベントに設定します。

     

    case CY_U3P_USB_EVENT_LMP_EXCH_FAIL:

      CyU3PEventSet (&glApplnEvent, CY_FX_USB_RESTART_EVT_FLAG, CYU3P_EVENT_OR);

         break;

     

    2. CyU3PEventGet APIを使用して、アプリケーションスレッドエントリ関数でカスタムイベントフラグ(CY_FX_USB_RESTART_EVT_FLAG )を受け取ります。イベントマスク(evMask )は、CY_FX_USB_RESTART_EVT_FLAG を受信するように設定する必要があることに注意してください。CyFxAppUsbRestart()関数は、USBインターフェイスのブロックを再初期化します。CyFxAppUsbRestart()のソースコードは、添付のサンプルプロジェクトに含まれています。

     

    /* USBブロックの再起動要求 */

    #define CY_FX_USB_RESTART_EVT_FLAG(1 << 3)

    .

    .

    .

    /*イベントマスク構成 */

    uint32_t evMask = CY_FX_SETCONF_EVENT_FLAG | CY_FX_RESET_EVENT_FLAG | CY_FX_USB_RESTART_EVT_FLAG;

      .

    .

    .

    .

     

    /*アプリケーションスレッドでのカスタムイベントの処理 */

    for(;;)

    {

      status = CyU3PEventGet(&glApplnEvent, evMask, CYU3P_EVENT_OR_CLEAR, &evStat, CYU3P_WAIT_FOREVER);

            if(status == CY_U3P_SUCCESS)

    {

              If(evStat&CY_FX_USB_RESTART_EVT_FLAG)

    {

    CyFxAppUsbRestart();

    }

    .

    .

    .

     

    注意:

    これらの手順は、FX3FX3SCX3、およびSD3に適用されます。

     

    添付ファイルUSBBulkLoopAuto.zipは、USBBulkLoopAuto FX3 SDKサンプルプロジェクトの修正バージョンです。関連する変更について、cyfxbulklpauto.cファイルでHANDLE_LMP_EXCH_FAIL_EVTを検索してください。