I2C と SPI:知っておくべき違い
プロジェクトを設計していますが、I2C と SPI のどちらを選択するかが重要ですか?でも、どれを選べばいいのかわからない?はいの場合、プロジェクトにどちらが適しているかを判断するお手伝いをします。
まず、I2C と SPI は「ローエンド」のプロトコルです。しかし、それらは使いやすく、PCB 上のチップ間の通信に最適です。
ただし、プロジェクトに間違ったプロトコルを選択すると、望ましくない結果になる可能性があります。それにもかかわらず、これら 2 つの類似したプロトコルの違いを理解するのに役立つようにここにいます。
準備はできたか?始めましょう!
SPI プロトコルとは?
1980 年代に、Motorola は SPI プロトコルを開発し、当時のマイクロコントローラと EEPROM などの他の周辺機器との間の通信を確立しました。
EEPROM
そのため、SPI プロトコルは、パーツ間の通信に 4 つの信号線を使用します。ただし、これらにはアース線と電源線が含まれていないことに注意することが重要です。 4 つのアクティブな信号線は次のとおりです。
- SS:スレーブ セレクト ライン (マスター SPI によって制御)
- MOSI:マスター アウト スレーブ イン (マスター SPI によって制御)
- SCLK:シリアル クロック (マスター SPI によって制御)
- MISO:マスター イン スレーブ アウト (マスター SPI デバイスによって制御)
この注記では、4 つのラインにより、マスター SPI (制御デバイス) がスレーブ SPI (周辺デバイス) と通信できます。
SPI プロトコル インターフェイス
さらに、SPI バスには 1 つのコントローラー デバイスしか配置できません。ただし、追加できる周辺機器の数に制限はありません。また、ペリフェラルを追加するということは、SS ラインを増やすことを意味します。したがって、3 つの別々の SS ラインを使用して異なる周辺機器を制御する方法を以下に示します。
複数の奴隷との SPI プロトコル インターフェイス
さらに、マスター SPI がデータの送信または受信によってペリフェラルと通信する場合、一致する SS ラインを引き出します。したがって、行は下になります。したがって、SCLK ラインがアクティブになり、設定された周波数でハイとローになります。
さらに、マスター SPI は MISO ラインを使用して、データとサンプルを同時に送信します。また、一度に 1 つのペリフェラルとマスター SPI の間でしか通信できないことに注意してください。
I2C とは
あるいは、1982 年にフィリップス セミコンダクターズ (現在の NXP セミコンダクターズ) が、1 つの PCB 上のチップ間の通信をシステム化するための最初の I2C プロトコルを開発しました。
SCI の対応物とは異なり、I2C プロトコルには 2 つの通信ラインがありますが、グランド ラインと電源ラインは除きます。これらの行には以下が含まれます:
- SDA:シリアル データ ライン
- SCL:シリアル クロック ライン
したがって、1 つのバスに任意の数のスレーブ デバイスとエージェント デバイスを接続できます。また、SCL ラインと SDA ラインの両方をオープン ドレイン ラインとして保持する必要があります。その結果、デバイスには一度に 1 つのロー ラインしか表示されません。さらに、パイプにプルアップ抵抗が必要です。そうすれば、ラインをハイに戻すことができます。
I2C プロトコル インターフェイス
I2C プロトコルのオープンドレイン設計により、同じバスで複数のマスターを使用できます。ただし、2 つのコントローラー デバイスが同時に通信を開始すると、デバイスの 1 つが送信を停止する調停が発生します。
一方、コントローラ デバイスは、通信が行われている間、SDA ラインを監視します。そのため、1 つのデバイスが送信中に SDA ラインが低いことを検出すると、送信を停止します。これにより、別のコントローラ デバイスが通信できるようになります。
また、コントローラ I2C デバイスは START 条件を送信して通信を開始します。その結果、SCL ラインがハイのままである間、SDA ラインはローになります。
次に、コントローラ デバイスは、送信先の受信者の 7 ビット アドレスと、読み取りビット (1) または書き込みビット (0) を送信します。この時点で、バス上のデバイスは、SDA ラインを Low にすることによって一致する 7 ビット レートのアドレスを持っている場合にのみ応答します。
I2C と SPI の違い
SPI と I2C はどちらも「ローエンド」プロトコルであるため、似ています。さらに、どちらのプロトコルも、重量のいとこ (SATA、イーサネット、USB など) が誇る速度やその他の機能を欠いています。
しかし、動作原理と機能に関しては. 2 つのプロトコルの違いを詳しく見てみましょう。
USB コネクタ
まず、SPI プロトコルで 4 つの異なるモードを設定して、クロックの動作を決定できます。また、通信が機能するためには、スレーブ デバイスとエージェント デバイスが同じモデルを使用する必要があります。
<オール>さらに、SPI データ転送速度は 10 Mbps を超えることができるため、大量のデータを転送するのに最適です。また、LCD や加速度計などの高速更新レートのセンサーで SPI プロトコルを見つけることができます。
LCD
あるいは、I2C は一度に 1 バイトのパケットでしかデータを送信できません。さらに、受信ペリフェラルは ACK ビットで各バイトを確認する必要があります。さらに、I2C プロトコルには、データ転送速度が異なる 3 つのモードがあります。
ACK ビット
標準モデルは最大 100 kbps、高速モードは最大 400 kbps、高速モードは最大 3.4 Mbps に達します。したがって、I2C プロトコルは SPI プロトコルよりも大幅に低速です。その結果、I2C プロトコルは温度センサーとアナログ デジタル コンバーターで最適に機能します。
温度センサー
I2C と SPI の比較
以下の表は、I2C と SPI の重要な違いをさらに示しています。
機能 | SPI | I2C |
ピンドライブ | プッシュプル モード | オープンドレインモード |
最大。スピード | なし (ただし、10 ~ 100 Mbps は見つかります) | 100 kbps (標準方式)400 kbps (高速モード)3.4 Mbps (高速モード) |
マルチマスター | いいえ | はい |
信号線 | 4 (追加のデバイスは余分な行を追加します) | 2 |
いいえ。周辺機器の | マスター SPI の SS ラインに使用できるピンの数は、使用できるペリフェラルの数に対する唯一の制限です | 最大。 7 ビットのアドレス指定で 112 |
フロー制御 | いいえ | はい |
機能 | SPI | I2C |
スピード | 設計でより高速な伝送が必要な場合は、SPI プロトコルが最適です。 | 低速デバイスの設計には I2C を選択できます |
PCB サイズ | PCB のサイズが気にならないのであれば、SPI や I2C で間違いはありません。 | PCB のサイズが小さく、トラック数が少ない場合は、I2C の選択を検討してください |
限定ピン | 通信用に回線を追加しても構わない場合は、SPI プロトコルを使用してください。 | 多くのトラックに慣れていない場合は、I2C が最適です。 |
パワー | 低消費電力デバイスの場合は、SPI プロトコルを使用してください | 消費電力の大きいデバイスには、I2C プロトコルを使用してください |