RS-232Cってどんなの
2014年8月4日
2016年10月7日
シリアル通信をBit Bangingでやるのはいいんだが、いったいシリアル通信って何?
それほどまじめに取り組む気もないのだが、多少のことは知っててもいいだろうというので、まずはお決まりのロジック・アナライザーで信号を眺めてみた。
ずっと小文字の「v」を送り続けると、こんなのの繰り返しとなる。
通信条件はこう。
小文字の「v」のASCIIコードは0x76で0b01110110なので、どうやらこういう感じらしい。
Highの状態だった信号がLowになるとそれ以降データが送られてくることをあらわし、このきっかけの1ビットをスタート・ビットと言うそうな。
データ長が8ビットに設定してあるので8つ読んだら9番目がもう一度Highになってこれをストップ・ビットと呼び、データの終了を表すのだそうだ。
今回の設定ではパリティー無しなのでパリティー・ビットは無い。
なるほど、としか言いようが無いが…。
通信速度は1200baudに設定してあり、1秒間に1200ビット送るということだ。
計算すると1ビット分は833μsとなり、8ビット分なら6.6666msなわけだが、実際に8ビット分を測ってみると、下のように6.6505msだった。
以上を踏まえてBit Bangingのコードを眺めると
すらすらと頭に入ってきて理解できる。
この例ではキーボードからの入力を送ってるので、データとデータの間が十分に開いているが、下のように、PICでフル回転で送信したような場合は、どれがスタート・ビットだかどうやって分かるんだろう。