工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

I2CとSPIの選び方:主要な違いを徹底解説

はじめに

プロジェクトを設計していて、I2CとSPIのどちらを選ぶべきか迷っていませんか? どちらが自分のプロジェクトに適しているか判断できない場合、この記事が最適な選択をサポートします。

まず前提として、I2CとSPIはともに「ローエンド」の通信プロトコルですが、使いやすく、PCB上のチップ間通信には完璧に機能します。しかし、間違ったプロトコルを選んでしまうと、望ましくない結果を招く可能性があります。ここでは、この2つの似たプロトコルの違いをわかりやすく解説します。

SPIプロトコルとは?

SPI(Serial Peripheral Interface)は、1980年代にモトローラが開発したプロトコルで、当時のマイクロコントローラとEEPROMなどの周辺機器との通信を確立するために作られました。

I2CとSPIの選び方:主要な違いを徹底解説
EEPROM

SPIプロトコルは、電源とグラウンドを除いて4本の信号線を使用して通信を行います。4本のアクティブな信号線は以下の通りです:

これら4本の線により、マスターSPI(制御デバイス)がスレーブSPI(周辺デバイス)と通信できます。

I2CとSPIの選び方:主要な違いを徹底解説
SPIプロトコルインターフェース

SPIバス上にはコントローラデバイス(マスター)は1つだけですが、ペリフェラル(スレーブ)の数に制限はありません。ペリフェラルを増やすにはSS線を追加します。以下は、3本の別々のSS線で異なるペリフェラルを制御する例です。

I2CとSPIの選び方:主要な違いを徹底解説
複数のスレーブを持つSPIプロトコルインターフェース

マスターSPIがペリフェラルと通信(データ送受信)したいとき、対応するSS線を「ロー(Low)」にプルダウンします。するとSCLK線がアクティブになり、設定された周波数でハイ・ローを繰り返します。マスターはMOSI線でデータを送出し、同時にMISO線でデータをサンプリングします。一度に通信できるのは1つのペリフェラルとマスターのみです。

I2Cプロトコルとは?

一方、I2C(Inter-Integrated Circuit)は1982年にフィリップスセミコンダクタ(現NXPセミコンダクタ)が開発し、1枚のPCB上のチップ間通信を体系化しました。

SPIと異なり、I2Cは電源とグラウンドを除いて2本の通信線のみを使用します:

1本のバスに任意の数のマスターとスレーブを接続できます。SDAとSCLはオープンドレイン構成で、デバイスはラインを「ロー」にのみ駆動できます。そのため、ラインを「ハイ」に戻すためにプルアップ抵抗が必要です。

I2CとSPIの選び方:主要な違いを徹底解説
I2Cプロトコルインターフェース

オープンドレイン設計のおかげで、I2Cでは同一バス上に複数のマスターを配置できます。2つのマスターが同時に通信を開始するとアービトレーション(仲裁)が発生し、一方が送信を停止します。マスターデバイスは通信中にSDA線を監視し、自分が送信中にSDAがローになっているのを検知したら送信を止め、他のマスターに譲ります。

通信開始時、マスターはSTARTコンディションを送信します(SDAがロー、SCLがハイの状態)。続いて、通信相手の7ビットアドレスと読み取りビット(1)または書き込みビット(0)を送信します。バス上のデバイスで、一致する7ビットアドレスを持つものだけがSDAをローにして応答(ACK)します。

I2CとSPIの主な違い

両プロトコルはともに「ローエンド」で、SATA、Ethernet、USBなどの高速プロトコルのような速度や機能は備えていません。しかし、動作原理と機能には明確な違いがあります。

I2CとSPIの選び方:主要な違いを徹底解説
USBコネクタ

SPIの動作モード

SPIにはクロックの極性と位相を決める4つのモード(モード0〜3)があり、マスターとスレーブは同じモードを使用する必要があります:

  1. モード0:立ち上がりエッジでデータサンプリング、クロックはアイドル時にロー
  2. モード1:立ち下がりエッジでデータサンプリング、クロックはアイドル時にロー
  3. モード2:立ち下がりエッジでデータサンプリング、クロックはアイドル時にハイ
  4. モード3:立ち上がりエッジでデータサンプリング、クロックはアイドル時にハイ

SPIのデータ転送速度は10 Mbpsを超えることもあり、大量データの転送に適しています。高速更新が必要なLCDや加速度センサーなどでよく使われます。

I2CとSPIの選び方:主要な違いを徹底解説
LCD

I2Cのデータ転送

I2Cは1バイトずつパケットで送信し、受信側は各バイトごとにACKビットで応答する必要があります。I2Cには異なる転送速度を持つ3つのモードがあります:

I2CとSPIの選び方:主要な違いを徹底解説
ACKビット

したがって、I2CはSPIより大幅に遅く、温度センサーやA/Dコンバーターなど、低速で問題ない用途に適しています。

I2CとSPIの選び方:主要な違いを徹底解説
温度センサー

I2CとSPIの比較表

機能SPII2C
ピン駆動方式プッシュプルオープンドレイン
最大速度規定なし(実測10〜100 Mbps)100 kbps(標準) / 400 kbps(ファスト) / 3.4 Mbps(ハイスピード)
マルチマスター不可可
信号線数4本(デバイス追加ごとにSS線が必要)2本
接続可能ペリフェラル数マスターのSS線用ピン数が上限最大112台(7ビットアドレスの場合)
フロー制御なしあり(ACK/NACK)

SPIとI2Cのメリット・デメリット

SPI

メリット

デメリット

I2C

メリット

デメリット

選択時に考慮すべき要素

プロトコル選びは価格だけで決めるべきではありません。以下のポイントを検討してください。

ピン数の制約

100ピン以上のマイコンを使いたくない場合、通信に必要な配線数が少ないプロトコルを選ぶのが賢明です。I2Cは2本、SPIは最低4本(スレーブ増加でさらに増える)です。

消費電力

設計によっては消費電力を最小化/最大化したい場合があります。要件に合ったプロトコルを選びましょう。一般的にSPIの方が省電力です。

速度

大量データを転送するなら、1マイクロ秒単位で速度が重要です。高速が必要ならSPI、低速でよければI2Cです。

PCBサイズ

基板サイズが小さい場合、配線スペースを節約できるI2Cが有利です。余裕があればどちらでも構いません。

用途別おすすめプロトコル

要件SPIが適しているケースI2Cが適しているケース
速度高速転送が必要な設計低速デバイス向けの設計
PCBサイズ基板サイズに余裕がある小型基板で配線スペースが限られる
ピン数追加配線を厭わない配線を最小限に抑えたい
消費電力低消費電力デバイス高消費電力を許容できるデバイス

UARTの理解

UART(Universal Asynchronous Receiver/Transmitter)は、組み込みシステムでデバイス間のシリアル通信を確立するための、ICやマイコン内部の物理回路です。UART通信では、送信側と受信側のUARTが直接通信します。マスター/スレーブの概念はなく、2本の線(TxとRx)だけでデータをやり取りします。

I2CとSPIの選び方:主要な違いを徹底解説
UARTプロトコルインターフェース

まとめ

実際の現場では、SPIとI2Cの両方が幅広く使われています。1つのチップに両方のインターフェースが搭載されていることも珍しくなく、その場合は選択の必要がありません。

しかし、どちらかを選ばなければならない場合:

ご質問があればお気軽にお問い合わせください。喜んでお手伝いします。

産業技術

  1. 信頼性の高い電力システムのための変圧器油試験必須ガイド
  2. ラインリアクターでモーターを守る:VFDシステムの必須コンポーネント
  3. 研削砥石ガイドの必須ガイド:破損と怪我からユーザーを守る
  4. 精密加工におけるマイクロツールの5つの重要な知見
  5. TAAコンプライアンス完全解説:サプライヤーが知るべき5つの重要ポイント
  6. 知っておくべき機械学習の必須アプリケーション9選
  7. ウォータージェット専門用語集:プロフェッショナル必携のキーワード解説
  8. ナーリング(ローレット加工)完全解説:テクスチャー仕上げの技術と目的
  9. CNCオペレーター必須の7つの重要パラメータ設定
  10. クラッチフェイシング完全マスター:産業用設備のための包括的ガイド
  11. 開発者必携:マスターすべき7つの必須Reactライブラリ