SPI の基礎

経緯

SPIはモトローラによって開発されたシリアル通信バスである。マスター−スレーブのパラダイムで理想的なデータストリーム応用に合致している機能は全二重プロトコルである。

動作原理

SPIは4つの信号:クロック(SCLK),マスター出力/スレーブ入力(MOSI),マスター入力/スレーブ出力(MISO),スレーブセレクト(SS)が必要である。

3つの信号(SCLK,MOSIとMISO)はSPIバス上で全てのデバイスによって共有される。SCLKはマスターデバイスで生成し,同期信号として使用される。MOSIとMISOはデータ線である。転送の方向はその名前で示す。データは常にSPIで両方向に転送されるが,しかし送信データだけに関心があるSPIデバイスは受信バイトを無視することができし,同様に,入って来るバイトだけに関心のあるデバイスはダミーバイトを送信できる。

各デバイスは自分のSS線を持つ。 マスターは通信するデバイスを選択するためにスレーブのSS線をローにする。

図1.単純なSPI構成
各スレーブデバイスは,それぞれスレーブセレクト信号(SS)を必要とする。

モード

交換自体には,事前に定義されたプロトコルは全く無い。このことがデータストリームアプリケーションでは理想的である。データは高速で,しばしば何十MHzもの速さで転送される。裏面が存在し承認やフロー制御が無いので,マスターはスレーブの存在に気づかないことすらある。

図2:SPIモード
データ交換のフレームは2つのパラメータによって記述され,クロック極性(CPOL)とクロック位相(CPHA)。本図はこれらのパラメータには4つの可能性があることとSPIにはそれに対応したモードがあることを示している。

利点と欠点

SPIは非常に簡単な通信プロトコルである。それはオーバーヘッドが殆ど無いという意味での特別なハイレベルプロトコルではない。データは非常に高いレートで完全二重で移行することができる。これは単一マスター単一スレーブの構成では非常に簡単で効率の良いことになる。
各スレーブがそれ自身のSSを必要とすることから、必要とするトレースの数はn+3である。ここでnはSPIデバイスの数である。このことはスレーブの数が増えると急速に複雑になることを意味する。

参考資料



戻る