2つのUARTはどのボーレートを使用するかをどのように知るのですか?


14

私はUARTの標準プロトコルについて読んでいます。受信UARTがデータが送信されたボーレートをまったく把握していない場合、多くの問題があると思います。想定されるボーレートがデータが送信されるボーレートよりも低い場合、受信UARTから「見えない」ビットが存在します。一方、受信機が使用するボーレートがデータが送信されるボーレートよりも高い場合、ビットが2回カウントされ、データが誤って「読み取られる」ことになります。

UARTに関する私の知識は、ラインがアイドル状態のとき、「1」に維持され、開始ビットが「0」で、停止ビットが「1」であるということです。また、ストップビットが「1」であっても、回線がアイドル状態の場合、「1」と違いはありませんか、区別する方法はありますか?

2つの通信UARTが最初に使用するボーレートについて同意しますか?はいの場合、彼らはそれをどのように行いますか?


「ストップビット」も同様に「アイドル状態に戻る」と呼ばれますが、ビットを短くすることで定義された最小長になりますが、保証された最小時間の後、回線は「1」状態のままになります。次のキャラクターが登場します。
ピーターベネット

XDが機能するまで、一般的なボーレートをランダムに変更できます。
ブラッドマン175

3
Hayesは、コマンドの開始時に文字シーケンス「AT」を使用することで、モデムのUARTが通信する端末と同じボーレートを設定する方法を開始しました。通常、これはUARTによってデコードされたのではなく、リアルタイムファームウェアによってデコードされ、コマンドラインの残りを受信するようにUARTを構成します。基本的には、スタートビットの幅とパリティの設定方法を検出しました。
16

@infixですから、UARTのVerilogコードを変更または作成する場合、この「AT」シーケンスを検出し、そこからボーレートを調整するようにできますか?最高のボーレートで初期化して、すべてをキャプチャし、そこから「AT」シーケンスを見つけることを考えていました。
Batibot323

自動車業界でよく見られるUARTベースの通信プロトコル(LINと呼ばれる)には自動ボー検出メカニズムがありますが、それでもマスターノードとスレーブノードはデータ長とストップビット長の点で一致する必要があります。つまり、ボーレートのみを検出するだけでは不十分です。
ロハトKılıç16年

回答:


26

通常、通常のUARTは、人間が希望するボーレート(およびワード長、ストップビット、パリティなど)で事前に構成する必要があります。

数十年にわたって、一部の設定で「自動ボー」検出の実装が行われてきましたが、これは通常、波形の主要な機能のタイミングを調整してボーレートを推測することで機能します。初期のバージョンでは、既知の文字を送信する必要がありましたが、より洗練されたバージョンでは、より任意のデータからレートを見つけることができる場合があります。

通常、受信UARTにはローカルクロックがあり、ローカルクロックはより高速(通常はボーレートの8倍または16倍)で実行されます。これは、着信信号をサンプリングし、エラーの数パーセントを許容できる方法でワード内のビットを検出するために使用されます。2つの水晶発振器でもレートを完全に一致させることはできませんが、許容誤差により、トリミングされたオンチップ発振器など、精度の低いソースを使用できる場合があります。特定のボーレートへの不正確な近似-昔、UARTマスタークロックは、8051ファミリの11.0592 MHzなど、一般的なボーレートにアクセスするために特定の周波数を必要とすることがありました。


2
自動ボー検出の私の仮説は、エッジとエッジ間の時間を見つけるために同時に動作するタイマーとカウンターですか?
ammar.cma

1
問題は、任意の「uart serial」波形を取り、ボーレートを確実に決定できるアルゴリズムがないことです。遷移間の最小時間は十分に簡単に見つけることができますが、それは単一ビット期間を正しく表すものではありません。
ピーターグリーン

アルゴリズムは存在します(さまざまな場所で「自動ボーディング」と呼ばれています)が、UARTチップのリソースが制限されたスコープに実装されている場合、送信データの一部を消費して、セッションの残りの間持続するキャリブレーションにそれを使用します。これはしばしば望ましくありません。ソフトウェアで行われ、少しの遅延が許容される場合、少なくとも低速通信(200KB / s未満)でデータを消費せずに(分析のために一時的に保存することにより)これを行うのは簡単です。高速化はさらに困難になります。
Wossname

8

2つのUARTは、マニュアルと、ハンドシェイクプロトコル、ストップビットサイズなどを含む手動でボーレートを設定することにより、ボーレートについて「同意」します。


1
.....インターフェースの両端用。
マイケルKaras

2

ええ、すべてが手動で設定されますが、特にシステムの文書化が不十分な場合(多くの場合、すべての組み込みシステムを見ています)、これはしばしば少し苦痛です。

USB、SATA、およびその他のほとんどの最新データプロトコルは、リセットまたは初期化イベントの後に標準化されたデフォルト構成で最低速度で開始し、他のすべてのユーザー(またはプロトコルに応じてマスターのみ)と高速で交渉することを知っています。また、データ/電源ラインでプルアップ抵抗またはプルダウン抵抗を使用して、サポートされている速度を示します。

他のプロトコルについてもう少し詳しく調べたい場合は、USBネゴシエーションに関するこの Webサイトを参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.