4 Replies Latest reply on May 27, 2019 6:14 PM by user_58014

    コントロール転送(ベンダーリクエスト)後のバルク転送について

    user_58014

      Cypress ご担当者 様

       

      下記内容につきまして回答をお願い致します。

       

      【件名】

      コントロール転送(ベンダーリクエスト)後のバルク転送について

       

      【現象】

      CypressドライバAPIを使用し評価アプリを作成しておりますが、CyControlEndPointクラスのXferData()関数を使ってコントロール転送にてリセットを行った後にエンドポイントリセットを実施しないと、その後のCyBulkEndPointクラスのXferData()関数失敗するという現象が出ております。

      ベンダーリクエストのコントロール転送後に、②のClear Featureを入れると、バルクアウト転送ができることを確認しております。

      (※弊社で確認しているのは、リセットとエラーデータ取得のベンダーリクエストです)

      ① ベンダーリクエストのコントロール転送

      ② Clear Feature(エンドポイントリセット)

      ③ バルク転送

       

      【問合せ内容】

      (1)現象①~③の手順は必須でしょうか?

      (2)①~③の手順はFX3/CyUSBに限った仕様でしょうか?

      (3)「②Clear Feature」を送信しなくてもバルク転送できる方法がありますでしょうか。

       

      お忙しいところ申し訳ありませんがご対応お願い致します。

        • 1. Re: コントロール転送(ベンダーリクエスト)後のバルク転送について
          HirotakaT_91

          意図的にCLEAR_FEATUREを行う必要はありません。

           

          ベンターリクエストを行った後には、必ずClear Feature (エンドポイントリセット)をしないとバルクOUT転送が出来ないとのことですが

          失敗した場合には返り値は何が返ってきますか?ベンダーリクエスト後の返り値も気になります。 “UsbdStatus()”または “UsbdStatusString()”を使用してご確認いただけますでしょうか?

          もし可能でしたらCode snippetもいただけますと幸いです。

           

          NOTE:

          FX3/FX2LP XferData() API Usage - KBA226200

           

          よろしくお願い致します。

          Hirotaka Takayama

          • 2. Re: コントロール転送(ベンダーリクエスト)後のバルク転送について
            user_58014

            Cypress

             Takayama  様

             

            御世話になっています、

            芝電子システムズ 前澤です。

             

            ご連絡が遅くなりまして申し訳ありません。

             

            下記内容につきましてお客様から回答がありましたので転送いたします。

            お手数ですがご回答をお願い致します。

             

             

            −−−−−−−−−−−−−−−−−−−−−−−−

             

            >>ベンターリクエストを行った後には、必ずClear Feature (エンドポイントリセット)をしないとバルクOUT転送が出来ないとのことですが

            >>失敗した場合には返り値は何が返ってきますか?ベンダーリクエスト後の返り値も気になります。 “UsbdStatus()”または

            “UsbdStatusString()”を使用してご確認いただけますでしょう

            >>か?もし可能でしたらCode snippetもいただけますと幸いです。

             

            確認した結果を以下記載します。

             

            【確認結果】

            ■エラーが発生するケース

            � バルクアウト転送 XferData() USBD_STATUSは"0x00"(エラーなし)

            � コントロール転送(OUT) XferData() USBD_STATUSは"0x00"(エラーなし)

            � バルクアウト転送 XferData() USBD_STATUSは"0xC0000011"(USBD_STATUS_XACT_ERROR)

            ※Code snippetについては、弊社ではよくわかりませんでした。

            ※※上記�と�の間で、エンドポイントリセット(CyBulkEndPointクラスのReset())を実施すると、�が正常終了します。

             

            また、その後の調査でエラー発生しないケースも確認できましたので、記載します。

            ■エラーが発生しないケース

            � バルクアウト転送 XferData() USBD_STATUSは"0x00"(エラーなし)

            � コントロール転送(IN) XferData() USBD_STATUSは"0x00"(エラーなし)

            � バルクアウト転送 XferData() USBD_STATUSは"0x00"(エラーなし)

             

            −−−−−−−−−−−−−−−−−−−−−−−−

             

            以上、よろしくお願い致します。

             

             

             

             

            Hirotaka Takayama 様は書かれました。

            >Hirotaka Takayama  replied to the discussion

            >"コントロール転送(ベンダーリクエスト)後のバルク転送について"

            >

            >To view the discussion, visit: https://community.cypress.com/message/196583?et=watches.email.thread#196583

            >

            >

            • 3. Re: コントロール転送(ベンダーリクエスト)後のバルク転送について
              HirotakaT_91

              ご返信遅くなり申し訳ございません。

              データを取得していただき、そしてUSBD_STATUS_XACT_ERRORが発行されているということを確認いただきありがとうございます。

               

              USBD_STATUS_XACT_ERRORは、

              1. CRC error

              2. Bad USB PID

              3. Time out

              の場合に発生するとされています。

              上記の問題が起こる原因として、電気的な問題が考えられます。

              つまりはUSB SuperSpeedラインのレイアウト設計のissue、または単純にUSBケーブルが長い可能性が考えられます。

              問題が起こる場合と起こらない場合があることからも、この可能性が高いのではないかと推察します。

               

              ホストと接続するUSBケーブルの長さはどうなっていますか?短いケーブルを使用して動作検証していただくことは可能でしょうか?

               

              よろしくお願い致します。

              Hirotaka Takayama

              • 4. Re: コントロール転送(ベンダーリクエスト)後のバルク転送について
                user_58014

                Cypress

                 Takayama  様

                 

                御世話になっています、

                芝電子システムズ 前澤です。

                 

                下記の件ご連絡ありがとうございます。

                基板はUSB認証試験で問題ありませんでした。

                ケーブル長は多分3m品を使用していると思います。

                 

                お客さまに確認しまして再度ご連絡しますので、

                しばらくお待ちください。

                 

                以上、よろしくお願い致します。

                 

                 

                 

                Hirotaka Takayama 様は書かれました。

                >Hirotaka Takayama  replied to the discussion

                >"コントロール転送(ベンダーリクエスト)後のバルク転送について"

                >

                >To view the discussion, visit: https://community.cypress.com/message/197247?et=watches.email.thread#197247

                >

                >