2 Replies Latest reply on Aug 26, 2020 7:44 PM by keni_4440091

    Community Translation - EZ-USB® FX3™ Issues With Simultaneous Bulk-IN and Control-IN Transfers In USB 2.0 – KBA92475

    keni_4440091

      Hi

       

      I want to translate KBA92475, please confirm to my work.

       

      Regards,

      Nino

        • 1. Re: Community Translation - EZ-USB® FX3™ Issues With Simultaneous Bulk-IN and Control-IN Transfers In USB 2.0 – KBA92475
          JuyoungJ_06

          Hi, Nino-san

           

          Confirm for this KBA.  Sorry to miss this item.

          Thanks,

           

          Jenna

          • 2. Re: Community Translation - EZ-USB® FX3™ Issues With Simultaneous Bulk-IN and Control-IN Transfers In USB 2.0 – KBA92475
            keni_4440091

            タイトル:USB 2.0の同時バルクインとコントロールイン転送でのEZ-USB® FX3™問題 - KBA92475

             

            バージョン 1

             

            userc_45255 2014/06/09 3:42 に作成。userc_45255 2017/05/17 3:00 に変更。

             

            Version: *A

             

            質問:

            USB 2.0スピードで、FX3™のバルクインとコントロールイン転送が同時に動作する場合、バルクイン転送はコントロールパイプでエラーが発生し、制御エンドポイントデータの破壊が見られます。これをどのように回避しますか?

             

            回答

            この問題を回避するためには、バルクインエンドポイントに対応するDMAチャネルが制御要求の間に停止している事を確認し、かつ一旦制御要求が完了したら再開することを確認して下さい。これを行うために下記の指図に従って下さい。

            1. DMAチャネルを構成する場合、callback notification = CY_U3P_DMA_CB_CONS_SUSPでコールバックを有効にして下さい。これで、チャネルが正常に停止している場合はいつもコールバックが生成されます。
            2. 全ての制御標準/ベンダー要求が処理されるコールバック関数の設定では、CyU3PUsbGetSpeed() APIを使用して、デバイスが2.0モードで列挙される事を確認して下さい。
            3. CyU3PUsbGetSpeed()CY_U3P_HIGH_SPEEDに戻る場合、バルクパイプを停止し、停止するまで待ってください。チャネルを停止するためにCyU3PDmaChannelSetSuspend() APIを使用します。このAPIがすぐに戻り、DMAチャネルコールバック関数(手順1で有効)が呼び出される時にチャネル停止が確認される事に注意して下さい。
            4. チャネルが正常に停止した後、CyU3PUsbSendEP0Data() APIを使用してホストに制御エンドポイントデータを送信する事ができます。
            5. 制御エンドポイントデータがホストに送信された後、制御転送のトランザクションステージが完了するのを待ちます。USBイベントCY_U3P_USB_EVENT_EP0_STAT_CPLTは、これが発生し、イベントがUSBイベントコールバック関数で処理された事を通知します。
            6. 制御転送が正常に完了すると、バルクインエンドポイントのDMAチャネルは停止状態(CyU3PDmaChannelSetSuspend)から出て、下記に示すように、再度(CyU3PDmaChannelResume)を実行する必要があります。

            CyU3PDmaChannelSetSuspend (&DMA_channel_handle, CY_U3P_DMA_SCK_SUSP_NONE, CY_U3P_DMA_SCK_SUSP_NONE);

             

            CyU3PDmaChannelResume( &DMA_channel_handle, CyFalse, CyTrue);

            注意: 上記手順はFX3 SDKGpifToUsbサンプルプロジェクトに記載されています。

            このプロジェクトは“<install_path>\EZ-USB FX3 SDK\1.3\firmware\basic_examples\cyfxgpiftousb”にあります。

             

            834 閲覧 カテゴリ: USB: SuperSpeed Peripherals   タグ: superspeed usb peripherals, ez-usb fx3a superspeed usb 3.0 peripheral controller