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

Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
user_58014
Level 2
Level 2
10 replies posted 5 replies posted 5 questions asked

Cypress ご担当者 様

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

【件名】

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

【現象】

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

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

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

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

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

③ バルク転送

【問合せ内容】

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

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

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

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

0 件の賞賛
1 解決策

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

データを取得していただき、そして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

元の投稿で解決策を見る

0 件の賞賛
4 返答(返信)
HirotakaT_91
Moderator
Moderator
Moderator
500 replies posted 250 replies posted 100 replies posted

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

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

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

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

NOTE:

FX3/FX2LP XferData() API Usage - KBA226200

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

Hirotaka Takayama

0 件の賞賛

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

>

>

0 件の賞賛

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

データを取得していただき、そして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

0 件の賞賛

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

>

>

0 件の賞賛