0

デバイス モードで Synopsys OTG コアを使用しています。このエンドポイント専用の周期的 FIFO を使用して、マイクロフレーム (1024 バイトの 3 パケット) あたりの最大転送のためにアイソクロナス IN 高速エンドポイント (USB 2.0) をプログラミングします。99% 以上の確率で機能します。ただし、転送が切り捨てられることがあります。たとえば、最初の 1024 バイトは (正しい DATA2 PID ではなく) DATA0 PID でバスに送信され、残りの 2048 バイトは送信されません。パケット数、マルチカウント、最大パケット サイズ、転送サイズを正しくプログラムしたので、何が原因なのかわかりません。

明らかに、これは非常に具体的な質問であり、答えが得られる見込みはあまりありませんが、暗闇の中でのショットは試してみる価値があると考えました. 前もって感謝します。

4

2 に答える 2

1

アイソクロナス転送は、パケット配信を保証しません。そのため、ホスト コントローラーに他のアクティブな転送がある場合、アイソクロナス パケットは黙って破棄されます。梱包された配送を保証する必要がある場合は、一括転送を使用する必要があります (ただし、配送時間は保証されません)。

アイソクロナスは、サウンドやビデオのストリーミングなど、一定の配信時間が必要であるが、一部のフレームが失われても問題ないアプリケーションに最適です。

この仕様ではバスに制限を設けており、全速バスでの定期的な転送 (割り込みおよびアイソクロナス) にフレームの 90% を超える割り当てを許可していません。高速バスでは、この制限が減り、マイクロフレームの 80% 以下を定期転送に割り当てることができます。(c) http://www.beyondlogic.org/usbnutshell/usb4.shtml

于 2012-04-26T17:02:33.023 に答える