Instant Engineering

エンジニアの仕事効率を上げる知識をシェアするWeb記事/機械設計/TPS/QC品質管理

シリアル通信とは?UART・SPI・I2Cの違い

「UART、SPI、I2C、RS232C、USBは何が違うのか」と聞かれたとき、すぐに整理できるでしょうか。

どれもデータを1本または少数の信号線で順番に送る通信方式として扱われますが、実務では接続距離、通信速度、配線本数、ノイズ耐性、同時通信の可否が大きく異なります。

たとえば、マイコン基板内のセンサー接続に向く方式と、制御盤内の機器間接続に向く方式は同じではありません。

シリアル通信を「何となくTX/RXでつなぐもの」とだけ理解していると、電圧レベルの違い、プルアップ抵抗の不足、GND未接続、終端処理の漏れなどで、通信が不安定になることがあります。

本記事では、シリアル通信の基本から、UART・SPI・I2C・RS232C・USBの違い、プロトコルと物理層の考え方、現場で起きやすいトラブルまでを実務目線で解説します。

 

1. シリアル通信とは何か

シリアル通信とは、データを1ビットずつ順番に送る通信方式です。

複数ビットを同時に並べて送るパラレル通信に対して、シリアル通信では少ない信号線でデータを時系列に並べて伝送します。

身近な例でいえば、複数車線で一斉に荷物を運ぶのがパラレル通信、1本の道路に荷物を順番に流すのがシリアル通信です。

一見すると、1本ずつ送るシリアル通信は遅そうに見えます。

しかし、配線本数を減らせること、長距離化しやすいこと、高速なクロックや差動信号と組み合わせやすいことから、現在のデジタル機器ではシリアル通信が広く使われています。

マイコンの周辺回路、センサー、表示器、通信モジュール、PLC、産業用ネットワーク、パソコン周辺機器など、実務で見かける通信の多くは何らかのシリアル通信です。

マイコンのCPU・メモリ・I/Oの基本を先に押さえておくと、シリアル通信が入出力端子を使ったデータのやり取りであることを理解しやすくなります。

 

2. シリアル通信とパラレル通信の違い

シリアル通信とパラレル通信の違いは、データを「順番に送るか」「同時に並べて送るか」です。

パラレル通信では、8ビットのデータを送る場合に8本のデータ線を用意し、1クロックで8ビットを同時に送れます。

一方、シリアル通信では1本または少数の信号線を使い、8ビットを1ビットずつ順番に送ります。

比較項目 シリアル通信 パラレル通信
データの送り方 1ビットずつ順番に送る 複数ビットを同時に送る
配線本数 少ない 多い
基板外配線 比較的扱いやすい 本数が増えて扱いにくい
高速化 差動伝送や高速規格と相性がよい 線間のタイミングずれが問題になりやすい
代表例 UART、SPI、I2C、USB、Ethernet 古いプリンタポート、内部バス、メモリバス

パラレル通信は、短距離でタイミングをそろえられる範囲では効率的です。

しかし、配線が長くなると各信号線の遅延差やノイズの影響が増え、すべてのビットを同じタイミングで正しく受け取ることが難しくなります。

シリアル通信はデータを順番に送るため、配線数を減らせます。

その結果、コネクタの小型化、基板配線の簡素化、ケーブルコスト削減、ノイズ対策のしやすさにつながります。

 

3. シリアル通信で押さえる基本用語

シリアル通信を理解するには、通信方式名だけでなく、ビット、クロック、同期、ボーレート、プロトコルといった基本用語を押さえる必要があります。

これらを曖昧にしたまま配線や設定を始めると、機器同士はつながっているように見えても、データが正しく読めない状態になります。

ビットとバイト

ビットは0または1を表す最小単位です。

一般的に8ビットをまとめたものを1バイトと呼び、文字や数値データの基本単位として扱います。

シリアル通信では、このビット列を送信側から受信側へ順番に流します。

クロックと同期

クロックは、データを読み取るタイミングを決める基準信号です。

SPIやI2Cのようにクロック線を持つ方式では、送信側と受信側が同じタイミングを見ながらデータをやり取りします。

一方、UARTのような非同期通信では、明示的なクロック線を持たず、スタートビットをきっかけに受信側があらかじめ決めた速度でデータを読み取ります。

ボーレート

ボーレートは、1秒間に何回信号状態が変化するかを表す値です。

UARTでは実務上、9600、19200、38400、115200bpsなどの設定値として扱うことが多く、送信側と受信側の設定を合わせる必要があります。

プロトコル

プロトコルとは、データの並べ方、開始・終了の合図、エラー検出、再送、アドレス指定などの通信ルールです。

同じシリアル通信でも、電気信号の種類とデータの意味づけは別物です。

たとえば、物理的にはRS-485の差動信号を使いながら、その上でModbus RTUという通信プロトコルを動かすことがあります。

産業機器でよく使うModbusのRTUとTCPの違いを理解すると、物理層とプロトコル層を分けて考える感覚がつかみやすくなります。

 

4. UARTとは何か

UARTは、Universal Asynchronous Receiver/Transmitterの略で、非同期のシリアル通信を行うための機能ブロックです。

マイコン、センサー、通信モジュール、デバッグ用端子などで非常によく使われます。

UARTでは、基本的にTX、RX、GNDの3本を使って通信します。

送信側のTXを受信側のRXへ、受信側のTXを送信側のRXへ接続し、基準電位としてGNDを共通にします。

UARTのデータ構造

UARTでは、1文字または1バイトのデータを送るときに、スタートビット、データビット、必要に応じてパリティビット、ストップビットを付けて送ります。

要素 役割
スタートビット これからデータが始まることを受信側に知らせる
データビット 実際に送りたい0/1のデータ
パリティビット 簡易的な誤り検出に使う
ストップビット データの終わりを示し、次の通信までの区切りを作る

UARTはクロック線を持たないため、送信側と受信側のボーレート設定がずれていると文字化けします。

また、データビット数、パリティ、ストップビットの設定も一致していなければなりません。

UARTとRS232Cは同じではない

初心者が混同しやすいのが、UARTとRS232Cです。

UARTはマイコン内部の通信機能やデータ形式を指す言葉として使われます。

一方、RS232Cは電圧レベルや信号の取り扱いを含むインターフェース規格として扱われます。

マイコンのUART端子をそのままRS232C機器に直結すると、電圧レベルが合わず通信できない、または破損する可能性があります。

実務では、TTLレベルのUARTとRS232Cを変換するレベル変換ICを挟むことが一般的です。

 

5. SPIとは何か

SPIは、Serial Peripheral Interfaceの略で、マイコンと周辺ICを高速につなぐためによく使われる同期式シリアル通信です。

センサー、A/Dコンバータ、D/Aコンバータ、フラッシュメモリ、表示器、通信ICなどで広く使われます。

SPIでは、一般的にSCLK、MOSI、MISO、CSの4種類の信号を使います。

信号名 意味
SCLK クロック信号。データを読み取るタイミングを決める
MOSI マスターからスレーブへ送るデータ線
MISO スレーブからマスターへ返すデータ線
CS 通信相手を選択する信号。SSと呼ばれることもある

SPIの大きな特徴は、クロック線を持つため高速化しやすいことです。

MOSIとMISOが分かれているため、送信と受信を同時に行う全二重通信も可能です。

SPIのメリット

SPIは構造がシンプルで、高速なデータ転送に向いています。

マイコンから外付けメモリへデータを読み書きしたり、高速なA/D変換データを取得したりする用途で便利です。

また、I2Cのようなアドレス衝突を意識せず、CS線で通信相手を明確に選べる点も扱いやすいところです。

SPIの注意点

SPIは機器を増やすとCS線も増えます。

そのため、接続先が多い場合は配線本数が増え、基板設計が複雑になります。

また、クロック極性やクロック位相の設定が合っていないと、データを読み取るタイミングがずれて通信できません。

CPOL、CPHA、モード0〜3といった設定は、接続先ICのデータシートに合わせる必要があります。

 

6. I2Cとは何か

I2Cは、Inter-Integrated Circuitの略で、少ない配線で複数のICを接続するための同期式シリアル通信です。

読み方は「アイ・スクエアド・シー」または「アイツーシー」と呼ばれます。

I2Cでは、SCLとSDAの2本の信号線を使います。

SCLはクロック線、SDAはデータ線です。

複数のデバイスを同じバス上に接続し、アドレスによって通信相手を選びます。

I2Cのメリット

I2Cの最大のメリットは、配線本数が少ないことです。

温度センサー、加速度センサー、EEPROM、RTC、表示器など、低速から中速の周辺ICを多数つなぐ用途に向いています。

GPIO端子の数が限られる小型マイコンでは、2本の信号線で複数デバイスを接続できることが大きな利点になります。

入出力端子そのものの役割を確認したい場合は、GPIOとマイコンのピン入出力の記事と合わせて読むと理解しやすくなります。

I2Cの注意点

I2Cはオープンドレイン構成で使われるため、SCLとSDAにはプルアップ抵抗が必要です。

プルアップ抵抗がない、値が大きすぎる、配線容量が大きすぎると、信号の立ち上がりが遅くなり通信が不安定になります。

また、同じアドレスを持つデバイスを同じバスに複数接続すると、アドレス衝突が起きます。

同一型番センサーを複数使う場合は、アドレス変更ピン、I2Cマルチプレクサ、別バス化などを検討します。

 

7. UART・SPI・I2Cの違いを比較する

UART、SPI、I2Cは、いずれもマイコン周辺でよく使われる代表的なシリアル通信です。

ただし、向いている用途は異なります。

項目 UART SPI I2C
同期方式 非同期 同期 同期
代表配線 TX、RX、GND SCLK、MOSI、MISO、CS SCL、SDA、GND
接続形態 基本は1対1 マスター1、スレーブ複数 バス上に複数デバイス
速度 低速〜中速 比較的高速 低速〜中速
強み デバッグや通信モジュール接続が簡単 高速でシンプル 2本で複数デバイスを接続できる
注意点 ボーレートや電圧レベルの不一致 CS線増加、クロック設定 プルアップ抵抗、アドレス衝突
用途例 デバッグ、GPS、無線モジュール 外付けメモリ、高速ADC、表示器 温度センサー、RTC、EEPROM

ざっくり言えば、簡単な1対1通信ならUART、高速なIC間通信ならSPI、少ない配線で複数の低速デバイスをつなぐならI2Cが候補になります。

ただし、最終判断では通信距離、基板面積、ノイズ環境、必要速度、接続先ICの対応方式を確認します。

 

8. RS232C・RS485・USBとの関係

シリアル通信を学ぶと、UART、RS232C、RS485、USBといった言葉が同じ文脈で出てきます。

ここで重要なのは、通信方式、物理インターフェース、プロトコルを分けて考えることです。

RS232C

RS232Cは、古くからパソコンや測定器、制御機器の接続に使われてきたシリアルインターフェースです。

マイコンのUART信号と似たデータの流れを扱いますが、電圧レベルや信号の扱いが異なります。

現在でも、古い設備、測定器、PLC周辺機器、バーコードリーダーなどで見かけることがあります。

RS485

RS485は、差動信号を使うことで比較的長距離・高ノイズ環境に対応しやすいシリアルインターフェースです。

複数機器を同じ通信線に接続できるため、工場設備や計測機器の通信で使われます。

RS485の上でModbus RTUなどのプロトコルを使う構成は、現場でもよく見られます。

USB

USBも広い意味ではシリアル通信の一種です。

ただし、USBは単純なTX/RX線ではなく、機器の認識、給電、通信速度、デバイスクラスなどを含む高度な規格です。

マイコンのUARTをUSBに変換するUSB-UART変換器はよく使われますが、USBそのものとUARTは同じではありません。

項目 位置づけ
UART マイコン内部の非同期シリアル通信機能として使われることが多い
RS232C 機器間接続用の古典的なシリアルインターフェース
RS485 差動信号で長距離・複数接続に向くシリアルインターフェース
USB シリアル伝送を使う高度な周辺機器接続規格

 

9. プロトコルと物理層を分けて理解する

シリアル通信で混乱しやすいのは、「線の電気的な仕様」と「データの意味」が一緒に語られることです。

実務では、物理層、データリンク層、アプリケーション層のように階層を分けて考えると整理しやすくなります。

たとえば、RS485は主に電気的な伝送方式の話です。

一方、Modbus RTUは、アドレス、ファンクションコード、データ、CRCなどを含む通信ルールです。

つまり、RS485という道路の上を、Modbus RTUという交通ルールでデータが走ると考えると理解しやすくなります。

同じように、Ethernetという物理・データリンクの仕組みの上で、Modbus TCP、OPC UA、MQTTなどの上位プロトコルを使うことがあります。

設備データ連携まで視野に入れる場合は、OPC UAによる設備データ連携MQTTのブローカー型通信も、シリアル通信の基礎から発展するテーマとして理解しやすいです。

 

10. シリアル通信の用途例

シリアル通信は、基板内の短距離通信から工場内の設備通信まで幅広く使われます。

ここでは、実務でイメージしやすい用途を整理します。

マイコンとセンサーの接続

温度センサー、圧力センサー、加速度センサー、距離センサーなどは、I2CやSPIでマイコンに接続されることがあります。

小型機器では配線本数や端子数が限られるため、I2Cのような少配線方式が便利です。

マイコンと通信モジュールの接続

GPSモジュール、Bluetoothモジュール、LTEモジュール、Wi-Fiモジュールなどは、UARTで接続されることがあります。

ATコマンドを送って設定や通信を行う機器では、UARTがデバッグしやすい方式として使われます。

設備と制御機器の接続

測定器、インバータ、温調計、表示器、バーコードリーダーなどでは、RS232CやRS485を使うことがあります。

工場設備ではノイズ、距離、保守性が重要になるため、単純な基板内通信よりもケーブル、シールド、接地、終端抵抗の考え方が重要です。

産業用ネットワークとの違い

フィールド機器が増え、複数のPLCや上位システムと連携する場合は、単純なシリアル通信だけでは管理が難しくなります。

その場合は、フィールドバスや産業用通信の種類を含めて、ネットワーク全体で設計する必要があります。

 

11. 通信速度とデータ量の考え方

シリアル通信を選ぶときは、通信速度をカタログ値だけで判断してはいけません。

実際には、1回の通信で送るデータ量、通信周期、ヘッダやチェックサムなどの付加情報、再送の有無を考える必要があります。

必要通信速度の概算

たとえば、1回あたり16バイトのセンサーデータを100Hzで送る場合、単純なデータ量は次のようになります。

 16 \times 8 \times 100 = 12,800 \text{ bit/s}

ただし、UARTではスタートビットやストップビットが付くため、実効的にはさらに余裕が必要です。

プロトコルのヘッダ、アドレス、CRC、応答待ち時間も加わるため、通信設定はぎりぎりではなく余裕を持たせます。

周期制御では遅延も重要

速度だけでなく、遅延と周期のばらつきも重要です。

制御用途では、平均的に速い通信よりも、決まった周期で確実に届く通信の方が重要になることがあります。

そのため、単純なログ取得ならUARTで十分でも、リアルタイム性が必要な制御ではSPI、専用フィールドバス、産業Ethernetなどを検討します。

 

12. 実務で起きやすいトラブル

シリアル通信の不具合は、プログラムだけでなく配線、電圧、GND、ノイズ、設定不一致が原因になります。

特に現場では、「たまに通信が途切れる」「特定の機器だけ応答しない」「ケーブルを延ばすと不安定になる」といった症状がよく起きます。

症状 主な原因 確認ポイント
UARTで文字化けする ボーレート、パリティ、ストップビットの不一致 両機器の通信設定をすべて確認する
通信できない TX/RXの接続逆、GND未接続 送信側TXが受信側RXへ入っているか確認する
I2Cが応答しない プルアップ抵抗不足、アドレス間違い SCL/SDAの波形とデバイスアドレスを確認する
SPIの値がずれる CPOL/CPHA設定不一致 データシートのSPIモードを確認する
長いケーブルで不安定 ノイズ、反射、GND電位差 差動通信、シールド、終端、接地を見直す

GNDを軽視しない

シリアル通信では信号線だけをつなげばよいと思われがちですが、基準電位としてGNDが重要です。

特にUART、SPI、I2Cのような基板内・近距離通信では、送信側と受信側のGNDが共通でなければ、信号のHigh/Lowを正しく判断できません。

オシロスコープやロジックアナライザで見る

通信トラブルでは、プログラムのログだけでは原因が見えないことがあります。

オシロスコープで電圧波形を確認し、ロジックアナライザでデータ列をデコードすると、ボーレートずれ、波形のなまり、ノイズ、タイミング不一致を切り分けやすくなります。

 

13. シリアル通信方式の選び方

シリアル通信方式を選ぶときは、単に「使ったことがあるから」で決めるのではなく、用途に合わせて判断します。

以下の観点を順番に確認すると、方式選定のミスを減らせます。

判断項目 確認内容
通信距離 基板内なのか、装置内ケーブルなのか、盤間・設備間なのか
必要速度 低速な設定通信か、高速なデータ収集か
接続台数 1対1か、複数デバイスをバス接続するか
ノイズ環境 モーター、インバータ、溶接機、電磁弁の近くを通るか
端子数 マイコンのピン数に余裕があるか
保守性 現場で設定・交換・診断しやすいか

短距離で高速なIC接続ならSPI、少ない端子で複数センサーをつなぐならI2C、デバッグや通信モジュールならUARTが候補になります。

設備間通信やノイズ環境では、RS485、Modbus、フィールドバス、産業Ethernetを含めて検討します。

 

14. よくある質問

Q1. シリアル通信とUARTは同じですか?

同じではありません。

シリアル通信はデータを順番に送る通信方式全般を指す広い言葉です。

UARTは、その中でも非同期通信を行うための代表的な方式・機能として使われます。

Q2. UARTとRS232Cの違いは何ですか?

UARTはマイコン内部の通信機能やデータ形式として扱われることが多く、RS232Cは機器間接続の電気的インターフェースとして扱われます。

電圧レベルが異なるため、直結せずレベル変換回路を使うのが基本です。

Q3. SPIとI2Cはどちらを使うべきですか?

高速性を重視するならSPI、配線本数を減らして複数デバイスを接続したいならI2Cが候補になります。

ただし、接続先ICがどちらに対応しているか、必要速度、基板配線、ノイズ環境で判断します。

Q4. USBもシリアル通信ですか?

広い意味ではシリアル伝送を使う通信です。

ただし、USBは単純なUARTとは異なり、機器認識、給電、デバイスクラス、通信速度などを含む複雑な規格です。

Q5. 通信できないときは最初に何を確認すべきですか?

まず配線、GND、電圧レベル、通信設定を確認します。

UARTならTX/RXの交差接続、ボーレート、パリティ、ストップビット、I2Cならプルアップ抵抗とアドレス、SPIならCSとクロックモードを優先して確認します。

 

15. まとめ

シリアル通信とは、データを1ビットずつ順番に送る通信方式です。

配線本数を減らしやすく、マイコン周辺、センサー接続、通信モジュール、測定器、産業機器まで幅広く使われています。

UARTは非同期の1対1通信に向き、SPIは高速なIC間通信に向き、I2Cは少ない配線で複数デバイスを接続する用途に向いています。

RS232C、RS485、USBは、UARTやシリアル伝送と関係しますが、同じ意味ではありません。

特に実務では、通信方式名だけで判断せず、電圧レベル、GND、通信速度、プロトコル、ノイズ環境、接続距離を分けて確認することが重要です。

シリアル通信を正しく理解できると、マイコン開発、設備データ収集、産業ネットワーク設計の基礎が一気につながります。