SPIとは?仕組みやI2Cとの違いについて解説
SPIの仕組みや4本の信号線の役割、クロックモードの設定方法をエンジニア向けに解説。I2Cとの速度・配線・用途の違いも整理し、FeRAM(強誘電体メモリ、FeRAM)など不揮発性メモリ設計への応用まで詳しく説明します
SPIとは?基本概念と誕生の背景
SPI(Serial Peripheral Interface)は、マイコンと周辺デバイスを接続するために広く使われている同期式シリアル通信規格です。組み込みシステムの設計において、センサーやメモリ、ディスプレイドライバなど多様なデバイスとのインターフェースとして採用されており、その高速性と実装のしやすさから、今日の設計において欠かせない標準インターフェースのひとつとなっています。
SPIの正式名称と開発の経緯
SPIは「Serial Peripheral Interface」の略称で、1980年代に当時のモトローラ社(現在のNXP Semiconductors社)によって開発されたシリアルバス規格です。当時の組み込みシステムでは、周辺デバイスとの接続にパラレルバスが使われていましたが、配線数の多さや基板面積の増大が課題となっていました。そこでモトローラ社は、少ない信号線で高速な同期通信を実現するSPIを提唱しました。その後、多くの半導体メーカーが対応デバイスを製品化したことで、業界標準として普及しました。現在ではSPIフラッシュメモリや高速なデータ転送を可能にするQSPI(Quad SPI)など、SPIをベースとした派生規格も広く活用されています。
SPIが採用されるシステムの特徴
SPIは主に基板上のチップ間通信、すなわち数センチから数十センチ程度の短距離通信を想定した規格です。そのため、マイコンと各種センサー、A/Dコンバータ、不揮発性メモリ(フラッシュ、FeRAMなど)、LCDドライバなど、さまざまな周辺デバイスとの接続に活用されています。SPIが採用される場面の共通点は、高速なデータ転送が求められること、かつ通信距離が短いことです。また、プロトコルがシンプルであるため、ソフトウェアによる実装負荷が低く、リアルタイム性が求められるアプリケーションにも適しています。通信速度に上限規格が存在せず、デバイスの仕様や基板設計における信号整合性の許す範囲で数十MHz以上の高速通信も実現可能です。
SPIを構成する4本の信号線の役割
SPIの標準的な接続は、SCK・MOSI・MISO・SSの4本の信号線で構成されます。SCKはマスタが生成するクロック信号で、データ転送のタイミングを同期させます。MOSIはマスタからスレーブへのデータ送信ライン、MISOはスレーブからマスタへのデータ受信ラインです。そしてSS(Slave Select)は通信相手のスレーブを選択するための信号線で、Lowアクティブで動作します。これら4本の信号線によって、マスタとスレーブ間で送受信を同時に行う全二重通信が実現します。なお、近年では用語の適正化によりMOSI・MISOをCOPI・CIPOと表記する動きもあり、データシートによって表記が異なる場合があるため注意が必要です。
SPIの通信の仕組みとクロックモード
SPIの通信は、マスタがクロックを生成し、そのクロックに同期してデータを送受信するという明快な仕組みを採用しています。厳密な業界標準規格によって策定されたものではないため、接続するデバイスのデータシートを正確に読み解き、クロックモードやデータビット長などを適切に設定することが、正常な通信を実現するうえで重要なポイントとなります。
マスタ・スレーブ構成とデータ転送の流れ
SPI通信は、通信を制御するマスタと、指示に従って動作するスレーブという役割分担によって成立しています。通信の主導権は常にマスタ側にあり、スレーブが自発的にデータを送信することはできません。データ転送の流れは、まずマスタがSS信号をLowにして通信相手のスレーブを選択するところから始まります。次にマスタがSCKにクロックを出力し、そのクロックに同期してMOSIラインからデータを送信します。同時にスレーブはMISOラインを通じてデータを返送します。このようにMOSIとMISOが独立しているため、送受信を同時に行う全二重通信が可能となっており、高いスループットを実現できます。通信終了後はマスタがSS信号をHighに戻し、通信を終了します。
チップセレクトによるスレーブ選択の仕組み
複数のスレーブデバイスを1つのマスタに接続する場合、SPIではSS信号、別名CS(Chip Select)信号を使って通信相手を指定します。SCKやMOSI・MISOの3本は全スレーブで共有しますが、SSラインはスレーブの数だけ個別に用意する必要があります。マスタは通信したいスレーブのSS信号のみをLowに落とし、他のスレーブのSSはHighのまま維持することで、目的のスレーブのみと通信します。この方式はI2Cのアドレス指定と異なり、ハードウェア信号で直接選択するため通信オーバーヘッドが少なく、高速性を維持できる点がメリットです。一方で、スレーブが増えるごとにSS信号線が1本増えるため、多数のスレーブを接続する場合はマスタのGPIOピン数に注意が必要です。
CPOLとCPHAによる4つの動作モードと設定の注意点
SPI通信では、クロックの極性を示すCPOLとクロックの位相を示すCPHAの組み合わせによって、モード0からモード3までの4つの動作モードが定義されています。CPOLはアイドル時のクロック状態を規定し、0であればLow、1であればHighとなります。CPHAはデータのサンプリングタイミングを規定し、どのモードを使用するかはスレーブデバイスの仕様によって決まります。マスタ側はスレーブのデータシートを確認のうえ、一致するモードを設定しなければなりません。モードの設定が不一致だと、ビットずれやデータの化けといった通信エラーの原因となるため、設計時に必ず確認すべき重要なポイントです。
SPIとI2Cの違い:速度・配線・用途から選ぶポイント
組み込みシステムの設計においてSPIと並んで頻繁に検討されるのがI2Cです。どちらも同期式シリアル通信規格ですが、信号線の本数、通信速度、接続方式など、設計上の判断に関わる重要な違いが存在します。
信号線の本数と接続方式の違い
SPIは標準で4本の信号線を使用するのに対し、I2CはSCL(クロック)とSDA(データ)の2本のみで通信を行います。I2Cはオープンドレイン方式を採用しており、プルアップ抵抗が必要になるものの、同一バス上に複数のマスタを接続するマルチマスタ構成が可能です。一方SPIでは、スレーブが増えるたびにSS信号線が増加するため、多数のデバイスを接続する場合はピン数の増加に注意が必要です。ただしSPIはプッシュプル出力(能動的な駆動)のため外部プルアップ抵抗が不要であり、信号の立ち上がり波形が安定しやすいというメリットがあります。配線数の少なさを優先するならI2C、高速性と設計シンプルさを優先するならSPIという選択が基本的な判断軸となります。
通信速度とスループットの比較
通信速度においてSPIはI2Cを大きく上回ります。I2Cの標準モードは100kbps、高速モードでも最大400kbps、さらに高速のFast-mode Plusでも1Mbpsが上限です。一方SPIには規格上の速度上限が定められておらず、使用するデバイスや回路設計次第で数十MHz以上の通信速度を実現することができます。さらにSPIは全二重通信に対応しているため、送信と受信を同時に行えるという点でもスループット面で有利です。I2Cは半二重通信であり、送受信を同時に行うことはできません。大容量データを低レイテンシで読み書きする必要がある、たとえば高頻度でデータを書き込むFeRAMやフラッシュメモリとのインターフェースには、SPIが適しています。
設計現場での使い分け:どちらをいつ選ぶべきか
SPIとI2Cの使い分けは、システムの要件によって決まります。高速なデータ転送が求められる場合、具体的にはADC・DAC、高速センサー、フラッシュメモリやFeRAMなどの不揮発性メモリとの通信にはSPIが適しています。一方、接続するデバイスが多く、基板上のピン数やスペースに制約がある場合や、通信速度よりも省配線を優先したい場合はI2Cが有利です。温度センサーやRTCなど低速でよいデバイスとの通信にもI2Cが多く用いられます。実際の設計では、高速性が必要なストレージやディスプレイにはSPI、管理・制御用の低速デバイスにはI2Cといった混在構成を取ることで、リソースを最適化するのが一般的です。
SPIとI2Cの選び方と設計への応用
SPIとI2Cはそれぞれに明確な特徴と得意領域を持つ通信規格です。特に不揮発性メモリを活用するアプリケーション設計においては、インターフェースの選択がシステム全体のパフォーマンスに大きく影響するため、正確な理解が求められます。
SPIの特徴と強みの整理
SPIの強みは通信速度の高さと全二重通信によるスループットです。クロックに同期した安定したデータ転送が可能であり、プロトコルのオーバーヘッドが少ないため、リアルタイム性が求められるシステムに適しています。また、プッシュプル方式のため信号の立ち上がり・立ち下がりが急峻で、高速動作時の波形品質にも優れています。SS信号線によるピン数の増加はトレードオフとして認識しておく必要があります。設計においてはデータシートで動作モードを正しく合わせることが安定通信の前提条件です。
I2Cとの選択基準の振り返り
SPIとI2Cの選択基準を整理すると、通信速度・配線数・デバイス数・双方向性の4点が主な判断軸となります。速度が最優先であればSPIですが、基板上のスペースや配線の制約が厳しい場合はI2Cが現実的な選択です。また、マルチマスタ構成が必要な場合もI2Cが有利です。逆に、1対1もしくは少数のスレーブとの高速通信が主な用途であれば、SPIの採用が設計をシンプルにします。
FeRAMとSPI:不揮発性メモリ設計への応用
FeRAM(強誘電体メモリ)はフラッシュメモリと比較して高速書き込み・低消費電力・高い書き換え耐性という特性を持ち、産業機器やIoTデバイスなどでの採用が進んでいます。FeRAMは幅広い製品ラインナップでSPIインターフェースに対応しており、マイコンとの接続が容易です。SPI接続のFeRAMを設計に組み込む際は、最大クロック周波数や、書き込み前に必要な「ライトイネーブル命令」の発行手順などをデータシートで確認することが重要です。SPIの高速性とFeRAMの「即時書き込み」を組み合わせることで、電源断などの緊急時に瞬時にデータを保護する、信頼性の高いシステムを実現できます。
RAMXEEDが提供するFeRAM製品一覧
https://www.ramxeed.com/jp/products/feram-products