Skip to content
RFrftools.io
Comms

UART ボーレート & フレームタイミング計算ツール

ボーレート、データ形式、MCUクロック周波数から、UARTフレームタイミング、スループット、およびUSART BRRレジスタ除数を計算します。ボーレート誤差を特定して、シリアル通信の信頼性を高めます。

Loading calculator...

公式

BRR=fclk16×B,Tbit=1B,Nframe=1+D+P+SBRR = \frac{f_{clk}}{16 \times B}, \quad T_{bit} = \frac{1}{B}, \quad N_{frame} = 1 + D + P + S

参考: STM32 Reference Manual RM0008 §27.3.4; ST AN2908

B目標ボーレート (bps)
f_{clk}MCU 周辺クロック周波数 (Hz)
BRRボーレートレジスタ除数 (整数)
T_{bit}1 ビットの持続時間 (s)
N_{frame}UART フレームあたりの合計ビット数 (bits)
Dデータビット (bits)
Pパリティビット (0 または 1) (bits)
Sストップビット (1 または 2) (bits)

仕組み

この計算機は、信頼性の高いシリアル通信を実現するために、UARTのボーレート除数値とタイミング誤差を計算します。組み込みエンジニア、IoT 開発者、ハードウェア設計者は、このユーティリティを使用して、ほとんどのレシーバで必要な 2 ~ 3% のクロック許容範囲内でマイクロコントローラの UART を構成しています。UART 規格 (RS-232/EIA-232 から派生) によると、各フレームにはスタートビット、5 ~ 9 データビット、オプションのパリティ、1 ~ 2 ストップビットが含まれています。115200 ボーを対象とする 16 MHz MCU では BRR=8 (16 倍のオーバーサンプリング) で 0.16% の誤差が得られます。一方、9600 ボーでは BRR=104 で 0.08% の誤差が得られます。調査によれば、3.5% を超えるボーレートエラーは、10 フレームごとに 1 フレームでバイトフレーミング障害を引き起こすことがわかっています。標準レート (9600、19200、38400、57600、115200、230400、460800、921600 ボー) は、一般的な水晶周波数 (8、12、16、20 MHz) での除数の丸め誤差を最小限に抑えるように定義されています。115200 ボーでのビット周期は 8.68 マイクロ秒で、信頼性の高い 10 ビットフレーム受信のためには、1 ビットあたり 300 ナノ秒以内のタイミング精度が必要です。

計算例

車載ECUの設計では、16倍のオーバーサンプリングを備えた20MHzのシステムクロックを使用して115200ボーでUART通信を行う必要があります。標準の UART 実装の除数式に従うと、BRR = f_clk/(16 x ボー) = 20,000,000/(16 x 115200) = 10.85 となります。BRR=11 に四捨五入すると、実際のボー = 20,000,000/(16 x 11) = 113636 ボーになります。エラー = |115200-113636|/115200 x 100 = 1.36%。これは、ほとんどの UART レシーバーデータシートで指定されている最大値 2% を満たしています。フレーム構造:1 スタート + 8 データ + 1 ストップ = 合計 10 ビット、スループットは 11,364 バイト/秒です。比較すると、8倍オーバーサンプリング (BRR=22) を使用すると、同じ 1.36% の誤差で113636ボーが得られますが、ノイズ耐性は低下します。

実践的なヒント

  • STマイクロエレクトロニクスのアプリケーションノートAN4908によると、任意の標準ボーレートで0.5%未満の誤差を実現できる場合はフラクショナルBRRを使用してください
  • 2メートルを超えるケーブルを介した3.3Vロジックの場合、RS-232仕様に従って400mVのノイズマージンを維持するために、ボーレートを115200に制限してください
  • オシロスコープによるタイミングの検証:連続10ビットを測定し、合計時間が予想値の 2% 以内(115200ボーで86.8us)以内であることを確認します。

よくある間違い

  • 許容誤差が50ppmを超える水晶を使用する場合、25℃では誤差が 0.005% 増加しますが、極端な温度(-40℃~+85℃)では合計誤差が 2% を超えることがあります。
  • 100000ボーなどの非標準のボーレートを選択すると、16MHzシステムでは 4.17% の誤差が生じるのに対し、115200ボーのシステムでは 0.16% の誤差が生じます。
  • フラクショナル・ボー・レート・ジェネレータ(STM32、LPCなどで入手可能)を使用すると、115200ボーで誤差が1.36%から0.1%未満に減少することを無視すると、誤差が1.36%から0.1%未満に減少します

よくある質問

業界調査によると、8-N-1(8データビット、パリティなし、1ストップビット)は組み込みアプリケーションの 90% で使用されています。これにより 80% の効率 (合計 10 ビットあたり 8 データビット) が得られ、Arduino、Raspberry Pi、およびほとんどのマイクロコントローラ・フレームワークではこれがデフォルトになっています。
パリティはフレームあたり1ビット増加し(8-N-1と8-E-1では効率が 80% から 72.7% に低下)、100% の信頼性でシングルビットエラーを検出しますが、2ビットのエラーは検出できません。IEC 61162 によると、海洋 NMEA プロトコルでは 4800 ボーの均等なパリティが義務付けられています。
3つの要因が支配的です:水晶の許容誤差(標準20〜100 ppm、0.002〜0.01%の誤差を加算)、整数除数の丸め(クロック/ボード比に応じて0〜3%)、および温度ドリフト(セラミック共振器のドリフトは、水晶の0.003%に対して-40℃から+85℃で0.5%)。
はい。ただし、エラーは大幅に増加します。16 MHz のボーレートが 250000 の場合、誤差は 0% (正確な除数) になり、100000 ボーレートでは 6.25% の誤差になります (BRR=10 では 100000 になりますが、両端が一致しなければなりません)。FTDI FT232R のような USB-UART ブリッジは、183 ボーから 3,000,000 ボーまでの任意のレートをサポートします。
標準UARTトランシーバは、10cm未満のPCBトレースで最大1 Mbaudをサポートします。FTDI FT232H は 12 メガボードを実現しています。3 Mbaud を超える場合は、差動シグナリングを使用してください (RS-485 は TIA-485-A では 15 メートル以上で 10 Mbaud をサポートします)。

Shop Components

As an Amazon Associate we earn from qualifying purchases.

USB-UART Adapter

USB to serial adapter for protocol debugging and flashing

USB Logic Analyzer

8-channel USB logic analyzer for capturing digital bus traffic

関連電卓