USBエニュメレート中のFX3 SDKからのCY_U3P_USB_EVENT_LMP_EXCH_FAILイベントの処理 - KBA225778 - Community Translated (JA)
- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
Community Translated by NoTa_4591161 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();
}
.
.
.
注意:
これらの手順は、FX3、FX3S、CX3、およびSD3に適用されます。
添付ファイルUSBBulkLoopAuto.zipは、USBBulkLoopAuto FX3 SDKサンプルプロジェクトの修正バージョンです。関連する変更について、cyfxbulklpauto.cファイルでHANDLE_LMP_EXCH_FAIL_EVTを検索してください。