Skip to content
RFrftools.io
PROTOCOLbeginner

UART 対 SPI 対 I2C

UART、SPI、I2Cは、組み込みシステムで最も一般的な3つのシリアルプロトコルです。ポイント・ツー・ポイントの非同期リンク用の UART、高速周辺バス用の SPI、2 本のワイヤを介したマルチデバイス通信用の I2C など、それぞれ異なる用途向けに設計されています。どのタイプが適切かは、速度、ピン数、およびトポロジーによって異なります。

UART (ユニバーサル非同期レシーバ/トランスミッタ)

UARTは、個別のTXラインとRXラインを使用するポイントツーポイントの非同期シリアルプロトコルです。共有クロックはありません。双方のボーレートが一致している必要があります。9600 メガビット/秒から 4 Mbps までの標準スピード。コンソール、GPS モジュール、Bluetooth モジュールのデバッグに使用されます。

Advantages

  • シンプルなハードウェア — わずか 2 本のワイヤ (TX、RX)
  • クロック信号は不要 — 非同期動作
  • ユニバーサルサポート — ほぼすべての MCU に UART が搭載されています
  • 長いケーブルでも動作し、ターミナルでのデバッグも容易

Disadvantages

  • ポイント・ツー・ポイントのみ — ネイティブ・マルチデバイス・バスなし
  • 双方がボーレートについて合意する必要がある。設定ミスが原因でデータが文字化けする
  • 一括転送ではSPIよりも速度が遅い
  • フレーミングバイトとスタート/ストップビットが必要 — 最大 20% のオーバーヘッド

When to use

GPSレシーバー、Bluetooth/WiFiモジュール、デバッグロギング、RS-232/RS-485を搭載した産業用デバイスなど、ポイントツーポイントリンクにはUARTを使用してください。速度よりもシンプルさと長距離通信が重要な場合に最適です。

UART ボーレート計算ツール

I2C (集積回路間)

I2Cは2線式バスプロトコル (SDA+SCL) で、1つのバス上で複数のマスタと最大127のデバイスをサポートします。標準速度:100 キロビット/秒、400 キロビット/秒、1 Mbps (Fast+)、3.4 Mbps (ハイスピード)。7 ビットアドレッシングを使用します。

Advantages

  • デバイス数に関係なく、2本のワイヤ(SDA+SCL)のみ
  • マルチデバイスバス — 最大 127 デバイスまでアドレス可能
  • チップ・セレクト・ラインは不要 — アドレスは帯域内で行われます
  • センサー、EEPROM、RTC、およびディスプレイコントローラーに最適

Disadvantages

  • 一括データ転送では SPI よりも遅い
  • オープンドレインバスにはプルアップ抵抗が必要 — 長いトレースでは速度が制限される
  • 固定アドレスデバイスではアドレスが競合する可能性がある
  • 高速データストリームには適していません

When to use

低速から中速までの複数の周辺機器がバスを共有していて、ピン数を最小限に抑えたい場合は、I2Cを使用してください。センサー (IMU、温度、湿度)、EEPROM、RTC、ディスプレイドライバに最適です。

I2C プルアップカリキュレータ

Key Differences

  • ワイヤ数:UART = 2 (TX/RX)、I2C = 2 (SDA/SCL、共有バス)、SPI = 4+ (デバイスあたり MOSI/MISO/SCK + CS)
  • 速度:一括転送の場合は SPI > I2C > UART、シンプルなストリーミングの場合は UART が最速
  • トポロジ:UART = ポイント・ツー・ポイント、I2C/SPI = マルチデバイス・バス (I2Cはアドレス指定、SPIはチップ・セレクト・ラインを使用)
  • UARTは非同期、SPIとI2Cは同期(共有クロック)
  • SPIはフルデュプレックス、I2CとUARTはフルデュプレックス(UART)またはハーフデュプレックス(I2C)のいずれかに設定可能

Summary

ポイントツーポイントのシリアルリンクとデバッグ/ログ出力にはUARTを使用してください。複数の低速センサーや周辺機器を 2 本のワイヤで接続する必要がある場合は、I2C を使用してください。1 つの周辺機器 (ディスプレイ、フラッシュメモリ、ADC) への高速転送が必要な場合は、SPI を使用してください。通常、決定要因はピン数と速度です。

Frequently Asked Questions

SPI、I2C、またはUARTのどちらが高速ですか?

SPIは最速です。一般的な実装は10~50 MHz(10〜50 Mbps)で動作しますが、主にトレース容量によって制限されます。I2C は最高で 3.4 Mbps (高速モード) に達します。UART は、標準的な実装では通常 115.2 キロビット/秒から 4 メガビット/秒です。

UARTバスに複数のデバイスを接続できますか?

標準UARTはポイント・ツー・ポイントです。RS-485 (UART シグナリングのマルチドロップ拡張) では、最大 10 Mbps の差動バス上に最大 32 ノードを接続できます。各デバイスはアプリケーション層でアドレス指定する必要があります。

なぜI2Cにはプルアップ抵抗が必要なのですか?

I2Cはオープンドレイン信号を使用するため、デバイスはバスをローにすることしかできず、ハイにはできません。外部プルアップ抵抗 (通常、100 kbps の場合は 4.7 kΩ、400 kbps の場合は 2.2 kΩ) は、ラインを駆動しているデバイスがないときにラインをハイレベルに引き上げます。プルアップ容量とバスキャパシタンスのRC時定数が最大速度を制限します。

I2CではできないSPIの用途とは?

SDカード(最大25MHz)、SPIフラッシュ(最大133MHz)、カラーディスプレイ(SPI TFT)、および高速ADC/DACなどの高速バルクデータには、SPIが適しています。オープンドレイン・バスの制約により、I2C は 3.4 Mbps 以上では確実に動作しません。

Related Comparisons

Related Calculators