K3の住民

最近レア社のことをほとんど書いていない自称レア社好きがゲームやプログラミングについて色々書いていく。

シリアル通信についていろいろ。

皆さん、久しぶりです。雪圀です。
最近、全然更新していませんでしたが、これ以降も僕の一身上の理由により、更新
できない日々が続くかと思います。ご了承ください。

今回記事を書くにあたって、皆さんにお知らせがあります。

今回から常用外の漢字使うの極力やめます(極力って書いたのははてなブログ
Wordのように文章校正機能がないので完全な推敲が難しいからです)。

なんでかっていうと、自分には読めてもほかの人には読めていないんじゃないか
って思ったからです。
今まで僕は僕のやり方で突き進むんだって感じで常用外の漢字を使いまくって
いましたが、それも今回でやめます。

よろしくお願いします。


ということで、今回は、シリアル通信について書いていこうと思います。

シリアル通信とは?

名前でわかると思いますが、通信方式のひとつです。
まずは図で解説します。

f:id:ryoryoau24:20190706144834p:plain

通信をするために、当然送信側と受信側はつながっている必要がありますので、
送信側と受信側をつなげます。

f:id:ryoryoau24:20190706145034p:plain

そして、8bitのデータ(+α)を1bitずつ逐次的に送受信します。それぞれのbitの意味
を解説します。

  • スタートbitストップbit

シリアル通信をするためには、受信側が「データが送られてくる」ことを知って
いなければならないので、送信側が受信側に「データを送ること」を知らせる必要
があります。
その手段がスタートbitとストップbitで、スタートbitは通信開始の合図、ストップbit
は通信終了の合図を表しています。

  • データbit

受信側に送るデータです。

データが正常に送られたかを確認するためのbitです。
データの合計が奇数個の場合を0とするoddパリティ、偶数個の場合を0とする
evenパリティがあります。
これがどのような働きをするのかというと、

送信側「送るデータの合計が偶数個だと知らせよう」

障害発生、データの合計が奇数個になる

受信側「送られてきたデータの合計が偶数個じゃないのだが・・・?」

エラー

といった感じでパリティエラーというエラーを吐き出してくれます。
データの合計が偶数個であるか奇数個であるかを確認しているだけなので、本来
エラーとなるデータもエラーなしで通ってしまう可能性がありますが、これがある
だけでだいぶ通信の信頼性が確保されます。
データが正常に送られたかを確認する必要がない場合、このbitは必要なく、なしに
設定することもできます。

図の解説をまとめると、

  • スタートbitにより通信が開始される
  • データを送受信する
  • パリティbitでエラーチェック)
  • ストップbitにより通信を終了する

データbitが8bit以上ある場合は、データをすべて送り終えるまで8bit送受信を繰り返し
通信し続けます。

以上がシリアル通信の主な動きとなります。

最後に、シリアル通信の設定にボーレート(Baud Rate)というものがありますので、
ボーレートについて解説します。
このボーレートは簡単に言えば、通信速度のことです。1秒間に何bit送れるか
示しています。ボーレートは多ければ多いほど、通信速度が速くなるわけですが、
ハードウェアによって設定の仕方があると思いますので、ハードウェアのスペックを
よく確認してから設定したほうがいいと思います。

シリアル通信の利点・欠点

  • 利点

シリアル通信の利点として最も挙げられるのは、「配線が少なくて済む」という、
ハードウェア的な利点です。
複数のデータを返すデジタルICや後述するパラレル通信などの場合、どうしても配線
が多くなってしまい、それにともない回路のほうも大きくなってしまいます。
しかしこのシリアル通信を使うことによって、その問題を解消することができます。

  • 欠点

1bitずつ送っているので、通信速度は速いとは言い切れません
いくらボーレートを多くしても、やはり1度に複数bit送ることのできるものには
負けてしまいます。

シリアル通信規格の種類

シリアル通信には様々な規格が存在します。今回はその一部を紹介します。

古くからある規格です。薄型ノートパソコンには間違いなく付いていないと思います
が、デスクトップパソコンにはいまだにこの規格のポートがあるのではないかと思い
ます。
端末から別の端末を操作したいとき、マイコンにプログラムを書き込みたいときに
よく使われます。
ANSI/EIA-232-E」が正式名称なのですが、一般的には「RS-232C」と呼ばれます。
このRS-232Cは組込み業界ではまだ現役なイメージです(もう現役じゃなかったら
ごめんなさい)。

  • I2C(I-squared-C) / SPI(Serial Peripheral Interface)

どちらもデジタルセンサで多く使われていて、組込みシステムで結構使われて
います。
I2CとSPIの違いは、線の数です。I2Cは2本ですが、SPIは3本または4本で通信します。
だから、I2Cのほうが配線が少なくていいとは思いますが、通信したいデバイスがSPI
対応のものしかなかった場合、それを選ぶしかないと思います。

おそらくIT業界と縁のない人でもこのUSBは知っているのではないでしょうか。
USBは、コンピュータに周辺機器を接続するための規格であり、接続するだけでOSが
自動的に認識して周辺機器を使うことができるという利点があります。
バージョンによって通信速度に違いがあり、バージョンが新しいほど通信速度が速い
です。
一般的に使われているのはUSB2.0とUSB3.x系統です。見分け方は2つあって、端子の
色(USB2.0は黒か白、USB3.0は青、それ以外はいろいろ)による見分け方と、ロゴ
(3.0ではSSと書かれてたり、3.1では3.0のロゴの右上に「10」があったりする)に
よる見分け方があります。
ただし、これらはついてる場合とついてない場合があります。その場合、マニュアル
とか仕様書を読むしかないと思います。

パラレル通信

おまけとして、シリアル通信とは対極の存在にあるパラレル通信をちょっとだけ解説
します。
パラレル通信は、複数の線を使い、並列にデータを送る通信方式です。シリアル通信
と比べると通信速度は速いですが、配線数は多く、配線長もあまり長くできないのは
非常に大きなデメリットです。
そのような理由があってか、最近ではパラレル通信を使った通信というのはあまり
聞きません。


以上です。最近シリアル通信をよく使うのでシリアル通信の勉強をしといたほうが
いいかなと思ったので書きました。
間違っている点があればぜひ指摘してください。

今回はこれくらいにしときます。