4

FT232R USBtoRS232 チップでいくつかのテストを実行しているときに、最大 3 Mbaud の速度を管理できるはずですが、実際の速度が約 38 kbaud または 3.8 KB/s しかないという問題があります。

私はウェブを検索しましたが、この制限を証明または反証するための比較可能なデータを見つけることができませんでした.

私はこれをさらに調べていますが、ここに誰かが同等のデータを持っているかどうか知りたいです.

私は自分のコードとこのツールでテストしました:

http://www.aggsoft.com/com-port-stress-test.htm

設定は、115、200、8N1、および 64 バイトのデータ パケットです。

次のような結果が期待できます。

115200 ボー -> 実質的に 11,520 バイト/秒または 11,52 KB/秒

921600 ボー -> 92,16 KB/秒

最低速度は 11.2 KB/秒、それよりも速い速度は約 15 ~ 60 KB/秒であることを確認する必要があります。

データシートに基づくと、これは問題ではないはずです - 現実に基づいて、私は 3,8 KB/s で立ち往生しています - 少なくとも今のところ。


おっと、かなり良いヒントを見つけました - 私の転送速度はパケットのサイズに大きく依存しています。そのため、64 バイト パケットを使用している間、最終的に 3.8 KB/秒になり、180 バイト パケットを使用すると、平均して約 11.26 KB/秒になりました。1 バイトの速度を確認すると、メイン ライトが点灯しました。パケット -> 約 64 バイト/秒!

それにいくつかの計算を追加すると、11.52 KB/秒を 180 で割ると 64 バイト/秒になります。したがって、基本的に速度はバイトサイズに比例します。これは正しいですか?なんで?

4

1 に答える 1

7

観察した結果は、シリアル オーバー USB の動作方法によるものです。これは USB 1.1 チップです。USB は、シリアルなどの連続ストリームではなく、パケットを使用して転送を行います。

そのため、デバイスはタイム スライス ウィンドウを取得し、このウィンドウを効果的に利用するのはドライバー次第です。パケット サイズを 1 に設定すると、USB パケットごとに 1 バイトしか送信できません。次のバイトを送信するには、自分の順番をもう一度待つ必要があります。

通常、USB デバイスにはデバイス側にバッファがあり、転送間でデータをバッファリングして、出力レートを一定に保つことができます。パケット サイズの設定が低すぎると、このバッファがアンダーフローします。USB 1.1 のタイム スライスは 10 ミリ秒で、すべてのデバイス間で共有される転送は 1 秒あたり 100 回しかありません。

「送信」呼び出しを行うと、すべてのデータが 1 回の転送で送信され、対話型アプリケーションが正常に動作し続けます。USB デバイスで最高のパフォーマンスを実現するには、最大転送サイズを使用することをお勧めします。これは、インタラクティブなアプリケーションを使用している場合は常に可能であるとは限りませんが、データ転送アプリケーションを使用している場合はほとんどの場合可能です。

于 2013-04-25T20:36:39.297 に答える