web-dev-qa-db-ja.com

シリアルポートRS232の最大可能速度

最近のPCのrs232シリアルポートの潜在的な最大速度はどれくらいですか?仕様には115200 bpsと記載されています。しかし、私はそれがより速くなることができると信じています。 rs232ポートの速度に影響するものは何ですか?水晶振動子だと思いますが、よくわかりません。

15
roman

これは、元のIBM PCに戻ります。それを設計したエンジニアは、安定した周波数を生成する安価な方法を必要としていました。当時広く使用されていたクリスタルに変わり、アメリカのどのカラーテレビでも使用されました。 NTSCテレビ規格の カラーバースト周波数 で発振回路を実行するように作られた水晶。これは315/88 = 3.579545メガヘルツです。そこから、まず、ボーレートを設定するために変更するプログラム可能なディバイダーを通過しました。次にUART自体がそれを16で除算して、データラインのサブサンプリングクロックを生成します。

したがって、取得できる最高のボーレートは、分周器を最小値の2に設定することです。これにより、3579545/2/16 = 111861ボーが生成されます。理想的なボーレートから2.3%の誤差。しかし、十分に近いので、クロックレートは正確である必要はありません。非同期シグナリングのポイントであるUARTのA、スタートビットは常にレシーバーを再同期します。

realRS-232ハードウェアを115200ボーで確実に実行することは、大きな課題です。電気規格はノイズに非常に敏感であり、誘導ノイズをキャンセルする試みも、インピーダンスが整合した伝送ラインを作成する試みもありません。 9600ボーでの最大推奨ケーブル長はわずか50フィートです。 115200では、実際には非常に短いケーブルしか使用できません。さらに先に進むには、RS-422の差動信号のような別のアプローチが必要です。

これはすべて古代の歴史であり、現在のハードウェアにはまったく当てはまりません。 16550のようなUARTチップに基づく真のシリアルハードウェアは急速に姿を消し、USBエミュレーターに置き換えられました。シリアルポートをエミュレートするカスタムドライバーがあります。ボーレートの選択を受け入れますが、USBバス自体では無視します。デバイスに接続したドングルの最後の0.5インチにのみ適用されます。ドライバーが最大値として115200を受け入れるかどうかに関係なく、それらは通常より高い値を受け入れます。

14
Hans Passant

最高速度はUARTハードウェアの仕様により制限されます。

"クラシック" PC UART( 1655最新の実装 は少なくとも1.5 Mbpsを処理できると思います。USBを使用する場合ベースのシリアルアダプタ。16550は含まれていません。もちろん、制限はアダプタで使用される特定のチップによって設定されます。

USBベースのアダプターを使用して、460,800 bpsで動作するRS232リンクを定期的に使用しています。

クロッキングに関するコメントへの応答(注意:私はソフトウェアの男です):非同期シリアル通信は、クロック(つまり、非同期部分)をデータと共に送信しません。代わりに、送信機と受信機は、どのビットレートを使用するかについて事前に合意することになっています。

データラインのスタートビットは、各「文字」の開始を示します(通常はバイトですが、スタート/ストップ/パリティビットでフレーミングされます)。次に、受信機はデータラインのサンプリングを開始して、その0または1かどうかを判断します。このサンプリングは通常、少なくとも16倍高速で行われます。実際のビットレート。安定していることを確認します。したがって、UART前述のように460,800 bpsで通信する場合、レシーバーは約7.4 MHzでRX信号をサンプリングします。これは、実際のUART生の頻度fを使用すると、そのレートでデータを確実に受信することは期待できません。オーバーヘッドがあります。

3
unwind

はい、より高速で実行することは可能ですが、主な制限は環境です。騒々しい環境では、速度を制限する破損データが多くなります。別の制限は、デバイス間のケーブルの長さです。信号を強化するために、リピーターまたは他のデバイスを追加する必要がある場合があります。

2
Anders