シリアル通信
Serial Communicationシリアル通信とは、一度に1ビットずつ逐次的にデータを送ることを指します。 シリアル(serial)は、 「直列・連続した」 という意味です。
シリアル通信を用いたアーキテクチャ
一般的にも多く普及しているUSBをはじめ、有線LANの規格であるイーサネットや、電子楽器の制御に用いられるMIDI、センサー系の通信規格であるI2Cなど、多くの仕組みで採用されています。
シリアル通信のメリット
バイト単位(=8ビット)を一度に送る「パラレル通信」に比べて電線が少なくて済むため、 シンプルな仕組みで通信を行うことができます。
特に、組み込み系のマイコンボードや小さいセンサーなど、省スペースな仕組みが求められる場合は、使用する端子の少ないシリアル通信の仕組みが適しています。
シリアル通信の仕組み
アルファベットの「A」をシリアル通信でやり取りする場合を考えてみましょう。
「A」はASCIIコードで「0x41」ですが、これをシリアル通信で送信する場合は、「0100 0001」という2進数の文字列になります。
01.スタートビット / ストップビット
データの前と後にはそれぞれ 「スタートビット」 「ストップビット」 と呼ばれる識別情報が付与されます。
データを受信する側は、スタートビットを認識することでデータの始まりを認識し、ストップビットを認識することでデータの終わりを認識することができます。
スタートビットは「0」で、ストップビットは「1」です。
これらを「A」の2進数データ「0100 0001」に付与した場合、以下のような文字列になります。
(スタートビット→)0(データ→)0100 0001(ストップビット→)111...
02.パリティビット
データが正常に送られたかどうかを検査するために付与されるビットを 「パリティビット」 と呼びます。
パリティには、
- 偶数パリティ
- 奇数パリティ
の2つの方式があります。2進数のデータの「1」を偶数個にするのが偶数パリティ、奇数にするのが奇数パリティです。
偶数パリティで先程のデータを送信する場合、以下のような文字列になります。
(スタートビット→)0(データ→)0100 0001 (偶数パリティビット→)0(ストップビット→)111...
「0100 0001」に含まれる「1」の個数は2つなので、既に偶数です。そのため偶数パリティビットは「0」となります。
03.ボーレート
シリアル通信では、1秒あたり何ビットのデータを送るかという単位(bps: bit-per-second)で通信速度を表します。これを、 「ボーレート」 と呼びます。
(厳密に、ボーレートとは「1秒間に変調・復調できる回数」を示しますが、ここでは便宜上「ボーレート=bps」という定義で記載します。)
送信側と受信側でボーレートを合わせておくことで、適切に値を得ることができます。Arduino等のマイコンでシリアル通信を行う場合、「9600bps」を指定することが多いようです。