主なシリアル通信オプションの2つであるI2CとSPIの選択は、特に誤った通信プロトコルが使用されている場合には、プロジェクトの設計に大きな影響を与えます。 SPIとI2Cの両方は、特定のアプリケーションに適した通信プロトコルとして、それぞれ独自の利点と限界を持っています。
SPI
SPI、またはSerial to Peripheral Interfaceは、IC コントローラと周辺機器が互いに通信するように設計された、非常に低電力の4線シリアル通信インターフェイスです。 SPIバスはフル・デュプレックス・バスで、最大10Mbpsの速度でマスタ・デバイスとの間で通信を同時に行うことができます。 SPIの高速動作は、一般に、長距離通信により信号線に付加される容量の増加により、別個のPCB上の構成要素間の通信に使用されることを制限する。 PCB容量はまた、SPI通信ラインの長さを制限する可能性があります。
SPIは確立されたプロトコルですが、互換性の問題につながる可能性があるいくつかの変種やSPIのカスタマイズにつながる公式な標準ではありません。 SPIの実装は、マスタ・コントローラとスレーブ・ペリフェラルの間で常にチェックして、製品の開発に影響を与える予期しない通信上の問題がコンビネーションに発生しないようにする必要があります。
I2C
I2Cは、PCB上のチップ間の通信用に設計された2本の信号線のみを必要とする公式の標準シリアル通信プロトコルです。 I2Cはもともと100kbps通信用に設計されていましたが、3.4Mbpsまでの速度を実現するために長年に渡ってより高速なデータ伝送モードが開発されています。 I2Cプロトコルは公式な標準として確立されており、I2C実装と良好な下位互換性の間の良好な互換性を提供します。
I2CとSPIの選択
2つの主なシリアル通信プロトコルであるI2CとSPIを選択するには、I2C、SPI、およびアプリケーションの利点と限界を十分に理解する必要があります。 各通信プロトコルには、アプリケーションに適用されるように区別される傾向のある明確な利点があります。 I2CとSPIの主要な違いは次のとおりです。
- I2Cは2本のワイヤのみを必要とし、SPIは3本または4本
- SPIは、I2Cがより遅い間に高速の全二重通信をサポートします
- I2CはSPIよりも強力です
- I2Cは、同じバス上の複数のデバイスをサポートしていますが、SPIは同じバス上の複数のデバイスを管理するために追加の信号線を必要とします。
- I2Cは、SPIがデータが正しく受信されたことを確認しない間に、送信されたデータがスレーブデバイスによって受信されることを保証します
- 通信バスの解放に失敗した1つのデバイスでI2Cをロックすることができます
- 低いデータ伝送速度ではあるが、SPIはI2Cが可能な間にPCBから送信することはできません
- I2CはSPI通信プロトコルより実装が安い
- SPIはバス上の1つのマスタデバイスのみをサポートし、I2Cは複数のマスタデバイスをサポートします
- I2CはSPIよりノイズの影響を受けにくい
- SPIは短い距離しか移動できず、PCBからはめったに離れることはありませんが、I2Cは低速ではあるがはるかに長い距離でデータを送信することができます
- 正式な標準がないため、SPIプロトコルのいくつかのバリエーションが生じました。これは、I2Cプロトコルで大幅に回避されています
SPIとI2Cの違いにより、アプリケーションに最適な通信オプションを簡単に選択できるようになります。 SPIとI2Cの両方が優れた通信オプションですが、それぞれにはいくつかの優位性と推奨アプリケーションがあります。 SPIは高速かつ低消費電力のアプリケーションに適していますが、I2Cは多数のペリフェラルとの通信に適しており、I2Cバス上のペリフェラル間でマスタデバイスの役割を動的に変更するのに適しています。 SPIとI2Cの両方は、組み込みの世界に適した組み込みアプリケーション用の堅牢で安定した通信プロトコルです。