このページではUSARTによる通信の通信速度の設定について記述します。PIC16F873のマニュアルでは通信速度としてボー(Baud)という単位が使われていますが正しくはbps(ビー・ピー・エス/ビット・パー・セカンド)とするべきです。厳密にはボーとbpsは違います。以下の表ではbpsにしています。
PICの場合、通信速度はPICのクロック周波数により変わります。通信速度の設定はSPBRGレジスタで行いますが、非同期通信の場合、外部の通信装置(通信相手)との速度と多少の誤差が生じるので、誤差がなるべく少なくなるようなクロックの選定も必要です。
SPBRGレジスタの値と通信速度の計算式は「通信速度指定」を参照して下さい。
低速指定時の非同期通信速度 ( BRGH = 0 )
外部の
通信速度
K-bps | Fosc=4MHz | Fosc=10MHz | Fosc=20MHz |
通信速度
(K-bps) |
誤差
(%) |
SPBRG
(10進) |
通信速度
(K-bps) |
誤差
(%) |
SPBRG
(10進) |
通信速度
(K-bps) |
誤差
(%) |
SPBRG
(10進) |
0.3 | 0.300 | 0 | 207 | - | - | - | - | - | - |
1.2 | 1.202 | 0.17 | 51 | 1.202 | 0.17 | 129 | 1.221 | 1.75 | 255 |
2.4 | 2.404 | 0.17 | 25 | 2.404 | 0.17 | 64 | 2.404 | 0.17 | 129 |
9.6 | 8.929 | 6.99 | 6 | 9.766 | 1.73 | 15 | 9.766 | 1.73 | 31 |
19.2 | 20.833 | 8.51 | 2 | 19.531 | 1.72 | 7 | 19.531 | 1.72 | 15 |
28.8 | 31.250 | 8.51 | 1 | 31.250 | 8.51 | 4 | 31.250 | 8.51 | 9 |
33.6 | - | - | - | 31.250 | 6.99 | 4 | 34.722 | 3.34 | 8 |
57.6 | 62.500 | 8.51 | 0 | 52.083 | 9.58 | 2 | 62.500 | 8.51 | 4 |
HIGH | 0.244 | - | 255 | 0.610 | - | 255 | 1.221 | - | 255 |
LOW | 62.500 | - | 0 | 158.250 | - | 0 | 312.500 | - | 0 |
高速指定時の非同期通信速度 ( BRGH = 1 )
外部の
通信速度
K-bps | Fosc=4MHz | Fosc=10MHz | Fosc=20MHz |
通信速度
(K-bps) |
誤差
(%) |
SPBRG
(10進) |
通信速度
(K-bps) |
誤差
(%) |
SPBRG
(10進) |
通信速度
(K-bps) |
誤差
(%) |
SPBRG
(10進) |
0.3 | - | - | - | - | - | - | - | - | - |
1.2 | 1.202 | 0.17 | 207 | - | - | - | - | - | - |
2.4 | 2.404 | 0.17 | 103 | 2.441 | 1.71 | 255 | - | - | - |
9.6 | 9.615 | 0.16 | 25 | 9.615 | 0.16 | 64 | 9.615 | 0.16 | 129 |
19.2 | 19.231 | 0.16 | 12 | 19.531 | 1.72 | 31 | 19.231 | 0.16 | 64 |
28.8 | 27.798 | 3.55 | 8 | 28.409 | 1.36 | 21 | 29.070 | 0.94 | 42 |
33.6 | 35.714 | 6.29 | 6 | 32.895 | 2.10 | 18 | 33.784 | 0.55 | 36 |
57.6 | 62.500 | 8.51 | 3 | 56.818 | 1.36 | 10 | 59.524 | 3.34 | 20 |
HIGH | 0.977 | - | 255 | 2.441 | - | 255 | 4.883 | - | 255 |
LOW | 250.000 | - | 0 | 625.000 | - | 0 | 1250.000 | - | 0 |
同期通信速度
同期通信の場合、通信相手と通信速度の同期を行いますので誤差は無いのですが、SPBRGレジスタの設定値を決めるために非同期と同じように計算をしてみました。
外部の
通信速度
K-bps | Fosc=4MHz | Fosc=10MHz | Fosc=20MHz |
通信速度
(K-bps) |
誤差
(%) |
SPBRG
(10進) |
通信速度
(K-bps) |
誤差
(%) |
SPBRG
(10進) |
通信速度
(K-bps) |
誤差
(%) |
SPBRG
(10進) |
0.3 | - | - | - | - | - | - | - | - | - |
1.2 | - | - | - | - | - | - | - | - | - |
2.4 | - | - | - | - | - | - | - | - | - |
9.6 | 9.615 | 0.16 | 103 | - | - | - | - | - | - |
19.2 | 19.231 | 0.16 | 51 | 19.231 | 0.16 | 129 | - | - | - |
28.8 | 28.571 | 0.79 | 34 | 29.070 | 0.94 | 85 | 28.902 | 0.35 | 172 |
33.6 | 33.333 | 0.79 | 29 | 33.784 | 0.55 | 73 | 33.557 | 0.13 | 148 |
57.6 | 58.824 | 2.12 | 16 | 58.140 | 0.94 | 42 | 57.471 | 0.22 | 86 |
ボー(Baud)とbpsの違い
ボー(Baud)と言うのは1秒間に変化する信号を表す単位です。
bpsと言うのはビット/秒で1秒間に転送するビット数を表す単位です。
回線の電圧でプラス電圧を"1"、マイナス電圧を"0"として相手にデータを送る場合にはボーとbpsは同じ値になります。
インターネットに電話回線を使って接続していることが多いと思います。電話回線は声を伝えるために作られていて、300Hzから3400Hzの周波数を伝えるように設計されています。3400Hzというと1秒間に3400回変化する信号を伝えられるということになります。単純に考えると最大でも3400bpsまでのデータしかできないことになります。実際には3400bpsまでは伝えられません。
最近のモデムは28.8Kbps、33.6Kbps、56Kbpsなどのような高速通信ができます。これらのモデムでは位相変調という方式を使っていて、一回の信号変化で複数のビットを転送できる方式が使われています。28.8Kbpsのモデムの場合、一回の信号変化で9ビットの信号を伝えています。ですから、ボーで表すと28800/9=3200ボーの通信になります。ですから、パソコンから28800bpsで出された信号はモデムで3200ボーの信号になり、電話回線を通して相手のモデムに到達します。相手のモデムでは3200ボーの信号から28800bpsの信号を抽出して相手のパソコンに伝わることになります。
|