私のチームは、USB OUTトランザクションでACKが欠落するという問題に直面しています。
当システムに関する情報:
* MCUはLPC5528
* SDK バージョンは 26.03.00 です。
* Call to USB_DeviceInitでは、最初のパラメータ(controllerId)としてkUSB_ControllerLpcIp3511Fs0を提供しているので、USBフルスピードを使用しています。
パターンについて多くを語るのは難しい。私たちがCANのは次の通りです:
* USB経由で大量のメッセージを送信する場合、まれにOUTトランザクションでACKが欠落することがあります。Ellisys USBアナライザーでこれを検出しました。抜けたものが見え、その後PCから3回の再試行、そしてUSBリセットが確認できます。
* それはめったに起こらない。同じ単純なUSBメッセージを繰り返し送信するスクリプトを設定しました(ターゲットは単にデータを返すだけで、複雑な計算などは行いません)。エラーが発生するまでに、数回の反復処理で済む場合もあれば、数千回の反復処理が必要な場合もある。
これが既知の問題なのか、あるいはデバッグのための何らかのコツがあるのかを知りたいです。
こんにちは、 @JacobBerggreenさん
LPC55S2x/LPC552xのエラータを確認しましたが、USB0フルスピードデバイス出力に直接対応するACKの欠如に関する既知の問題は見つかりませんでした。現在、USBの訂正表は主に高速モードに焦点を当てているため、あなたの構成に直接適用できるわけではありません。
この現象から考えられるより可能性の高い理由は、OUTエンドポイントが特定のタイミングで受信バッファを適時に準備しなかったため、ホストがOUTを送信した際にデバイスがACKに応答できず、再試行やリセットがトリガーされたということである。各アウトが完了した直後にUSB_SeviceRecvRequest()が呼び出されるかどうかを確認し、コールバックのプロセッシングを最小限に抑えることが推奨されます。USB割り込みの優先順位を確認し、長時間のシャットダウン割り込みを避けることも推奨されます。
BR
ハリー