シリアル通信をオシロで眺めたときに1ビットの幅からボーレートを求めたかった話―1ビットの時間×ボーレートはやみ表―

タイトルの意味がわかる、かつ、具体的にどうやって求めれば良いかぱっと出てこない人(ぼく)向けのメモです。

それ以外の人にとってはここまで読んでいただくのも気が引ける内容の無さなです、すみません。

  • この記事で触れる内容
    • シリアル通信ポートにオシロのプローブを当てた波形からボーレートを計算する
  • 触れない内容
    • それ以外のすべて

とはいえ、「それ以外のすべて」は完全に手放しもアレなので、このあたりが参考になると思います。

techlabo.ryosan.co.jp

さて、目の前にあるデバイスのシリアル通信のボーレートを知りたい!手元には簡易なオシロスコープしかない!ボーレートってどう計算するんだっけ!?

ボーレートは以下の式で計算できます

ボーレート[bps] = 1 / 1ビットの時間

ということは、波形の凸の幅=1ビットの時間は以下のように計算できます。

9,600bpsの場合であれば

1 / 9,600[bps] ≒ 0.000104[sec]

はい、おしまい。

1ビットの時間×ボーレートはやみ表

これではさすがに内容が無さすぎるので、よく使われるボーレートとビット時間の対応表を置いておきます。

1ビットの時間 ボーレート
800us 1,200bps
400us 2,400bps
200us 4,800bps
104us 9,600bps
52us 19,200bps
26us 38,400bps
17us 57,600bps
9us 115,200bps

たとえばサムネにした画像の場合は、100usとちょっとなので9,600bpsのようですね。

ちなみにオシロはRaspberry Pi PicoとAndroidでつくれるScoppyというやつです。

picolabo.org

オシロスコープはちゃんとしたのを買うに越したことはないですが、「ちゃんとしたのを買わなきゃ」と思って結局買わずに過ごしてしまう(以前のぼく)のであれば、どんなに安物でもいいからとりあえず一つは買っておくべきですね。

めでたしめでたし。