自分の勉強がてら、シリアル通信方式を分かりやすくまとめました。
絶賛勉強中なので、ツッコミどころがあればご指摘いただけると嬉しいです。
全部読むのが面倒な人の為に、最後にシリアル通信方式比較表でまとめています。
#そもそもシリアル通信とは何か?
##シリアル通信
データ伝送の間、デジタルデータを1ビットずつ順次伝送する接続方式のこと
特徴
回線数が少なく低コスト
伝搬速度が遅い
⇒パラレル通信と比較し、長距離間のデータ伝送等に有利
##パラレル通信
複数の信号線を利用して複数ビットのデータを同時に伝送する方式
特徴
伝送効率が速い
回線数が多く高コスト
⇒同一室内の近距離端末間等で利用される
##シリアル通信かパラレル通信か?
ここまで、シリアル通信とパラレル通信、それぞれメリットとデメリットを見てきたが、最近では、通信速度の高度化により、シリアル通信が主流になりつつあるようである。
(詳しい人いたらコメントください)
⇒ @sounisi5011 さんよりコメントいただきました。パラレル通信だと信号線同士で時差が生じることがあるが、シリアル通信だとその心配がない、ということのようです。
#シリアル通信の同期方式
クロック同期
データ通信用の信号線とは別にクロック信号線を持ち、その信号を用いて送信側と受信側の同期を行う。
以下のような特徴がある。
・ データ通信用の信号線の他にクロック信号線を必要とするため、信号線の本数が増える
・ データ通信用に信号線が確保出来るため、伝送効率が良い
ex.) I2C通信、SPI通信
調歩同期/非同期方式
送受信するデータの前後に**"start bit"と"stop bit"を伝送することで、送信側と受信側の同期をする方式。
調歩同期方式とか非同期方式とか呼ばれているよう。名前がややこしい。
以下のような特徴がある。
・ 同期のためのクロック線を必要としないため、信号線が少なくてすむ
・ データ線とスタートクロック同期に比べ伝送効率は悪い**
ex.) UART通信
#各シリアル通信の特徴をみていく
##I2C通信
フィリップス社が提唱した周辺デバイスとのシリアル通信の方式。
一本の信号線がいくつかの役割を担っているイメージ。
特徴
・マスタ側とスレーブ側を分け、マスタ側が全ての制御を行う
・ データ通信信号線の方向は双方向
・1バイト転送毎に受信側からACK信号を返送し、互いに確認を取りながら
データ転送を行う
・個々のスレーブがアドレスを持ち、データの中にアドレスが含まれる
信号線が少なくて済む (2本の信号線から構成される)
伝送速度は遅め (100kbps~1Mbps)
用途
・同じ基板内など、近距離で直結したデバイスでシリアル通信を行うために使われるのが主。(離れた装置間の通信には不向き)
##SPI通信
モトローラ社が提唱した周辺デバイスとのシリアル通信の方式。
それぞれの信号線が各々の役割に集中しているイメージ。
特徴
・ I2C通信同様、マスタ側とスレーブ側を分け、マスタ側が全ての制御を行う
・ データ通信は、 MOSI / MISO信号各々が、”マスタ→スレーブ”、”スレーブ→マスタ”片方向ずつを担う
・ SS(スレーブセレクト)信号でデータ通信先を指定
伝送速度がはやめ (数Mbps)
信号線が3~4本必要
用途
・同じ基板内など、近距離で直結したデバイスでシリアル通信を行うために使われるのが主(離れた装置間の通信には不向き)
##UART通信
調歩同期式によるシリアル通信の方式。
同期のためのクロック線を持たない。
特徴
・データ通信のための1〜2本の信号線で構成される
ー半二重通信(1本):送信と受信を切り替えながら,交互に通信を行う。
ー全二重通信(2本):送信と受信を同時に行うことが可能。ほとんどの UART が対応。
・ 1バイトの開始と終了を start bit と stop bitで認識
信号線が少なくて済む (1~2本)
クロック同期式と比較し伝送速度は低速 (0.1~115kbps)
用途(追記予定)
・マイコン間通信?
・マイコンと動作モニタ用の端末を通信や、無線LAN用のモジュールとの通信等
#シリアル通信方式まとめ
信号線 | 同期方式 | 通信速度 | 接続形態 | 実際の用途 | |
---|---|---|---|---|---|
I2C通信 | 2本 | クロック(同期式) | 0.1 ~ 1 Mbps | 1対多 | デバイスーマイコン間 |
SPI通信 | 3~4本 | クロック(同期式) | 1 ~ 数 Mbps | 1対多 | デバイスーマイコン間 |
UART通信 | 1~2本 | タイミング信号(調歩同期/非同期式) | 0.1 ~ 115kbps | 1対1(一部1対多) | マイコンーマイコン間 |
#参考サイト
参考にさせていただいたページは以下の通りです。
SPI通信の使い方: http://www.picfun.com/f1/f05.html
I2C通信の使い方: http://www.picfun.com/c15.html
→詳細に、かつ分かりやすくまとめてくださっています。もっと知りたい!という方は目を通してみると良いかも。
調歩同期について: https://synapse.kyoto/glossary/glossary.php?word=%E8%AA%BF%E6%AD%A9%E5%90%8C%E6%9C%9F