UART ボーレート誤差計算機
ボーレートジェネレータ モード
SPBRG 値
51
実ボーレート
9,615
誤差
+0.160%
SPBRG = Fosc / (16 × baud) − 1 = 51
✓ 誤差 ±2% 以内 — 通常使用可能
標準ボーレート一覧(Fosc = 8 MHz · 16× BRGH=1, BRG16=0)
| ボーレート | SPBRG | 実ボーレート | 誤差 |
|---|---|---|---|
| 300 | 1666 | 300 | -0.020% |
| 1,200 | 416 | 1,199 | -0.080% |
| 2,400 | 207 | 2,404 | +0.160% |
| 4,800 | 103 | 4,808 | +0.160% |
| 9,600 | 51 | 9,615 | +0.160% |
| 19,200 | 25 | 19,231 | +0.160% |
| 38,400 | 12 | 38,462 | +0.160% |
| 57,600 | 8 | 55,556 | -3.549% |
| 115,200 | 3 | 125,000 | +8.507% |
| 230,400 | 1 | 250,000 | +8.507% |
| 460,800 | 0 | 500,000 | +8.507% |
| 921,600 | 0 | 500,000 | -45.747% |
PIC UART ボーレート設定
PICのEUSARTはFoscを整数で分周してボーレートを生成します。 分周比が整数に丸められるため目標値と実際の値に誤差が生じます。 一般に ±2%以内 であれば通信が成立します。
SPBRG 計算式
- BRGH=0, BRG16=0 (64×): SPBRG = Fosc / (64 × baud) − 1
- BRGH=1, BRG16=0 (16×): SPBRG = Fosc / (16 × baud) − 1
- BRGH=1, BRG16=1 (4×): SPBRG:SPBRGH = Fosc / (4 × baud) − 1
モード選択のコツ
同じFoscとボーレートでも、高分周モード(64×)より低分周モード(4×/16×)の方が 誤差が小さくなる場合があります。4 MHz 内蔵発振器で 9600 bps を使う場合は BRGH=1(16×)が推奨です。8 MHzで115,200 bpsを使用する場合、BRGH=1・BRG16=0の 16×モードではSPBRG=3、実ボーレート125,000 bps、誤差+8.507%となり、通常の許容範囲を超えます。 BRG16=1を含む他のモードや、クロック周波数の変更を検討してください。
UARTボーレート誤差を調べる手順
- STEP 1発振周波数Foscと目標ボーレートを入力します。
- STEP 2BRGH・BRG16など対象モードの候補値と誤差率を比較します。
- STEP 3データシートに合う設定を選び、送受信の実測で確認します。
具体的な利用例
16MHzクロックで115200bpsを出すとき、分周モードごとのSPBRG候補と実ボーレートを比較できます。絶対値の小さい誤差を選ぶことで、相手機器とのサンプリングずれを抑えやすくなります。
結果を見るときの注意点
許容誤差はフレーム長、相手側の誤差、クロック精度、温度変動に左右されます。計算値だけで通信を保証せず、対象MCUの式とレジスタ上限を照合し、オシロスコープや実通信で確認してください。
入力データの扱い
処理はこのブラウザ内で完結し、入力したテキストやファイルは変換・解析のために外部サーバーへ送信されません。共有端末を使う場合は、作業後に入力欄とクリップボードの内容も消去してください。