シリアル・ペリフェラル・インターフェイス (SPI) は、高速な同期シリアル入出力 (I/O) ポートであり、この機能により、プログラムされた長さ (1~16 ビット) のシリアル・ビット・ストリームを、プログラムされたビット転送速度でシフトして、デバイスに入力、デバイスから出力できます。SPI は、通常、MCU コントローラと、外部ペリフェラルや他のコントローラとの間の通信に使用されます。代表的なアプリケーションとして、シフト・レジスタ、ディスプレイ・ドライバ、A/D コンバータ (ADC) などのデバイスを使用した外部 I/O またはペリフェラルの拡張が挙げられます。マルチデバイス通信は、SPI のマスタまたはスレーブ動作によってサポートされています。このポートは、16 レベルの受信および送信 FIFO をサポートしており、CPU サービスのオーバーヘッドを低減できます。
SPI モジュールの主な特長は次のとおりです。
- SPISOMI:SPI スレーブ出力 / マスタ入力ピン
- SPISIMO:SPI スレーブ入力 / マスタ出力ピン
- SPISTE:SPI スレーブ送信イネーブル ピン
- SPICLK:SPI シリアル・クロック・ピン
- 2 つの動作モード:マスタおよびスレーブ
- ボーレート:プログラム可能な 125 種類のレート。使用可能な最大ボーレートは、SPI ピンで使用される I/O バッファの最大速度によって制限されます。
- データ・ワード長:1~16 データ・ビット
- 4 つのクロック方式 (クロックの極性とクロック位相ビットで制御) には、次のものがあります。
- 位相遅延なしの立ち下がりエッジ:SPICLK アクティブ High。SPI は、SPICLK 信号の立ち下がりエッジでデータを送信し、SPICLK 信号の立ち上がりエッジでデータを受信します。
- 位相遅延付きの立ち下がりエッジ:SPICLK アクティブ High。SPI は、SPICLK 信号の立ち下がりエッジより半サイクル前にデータを送信し、SPICLK 信号の立ち下がりエッジでデータを受信します。
- 位相遅延なしの立ち上がりエッジ:SPICLK 非アクティブ Low。SPI は、SPICLK 信号の立ち上がりエッジでデータを送信し、SPICLK 信号の立ち下がりエッジでデータを受信します。
- 位相遅延付きの立ち上がりエッジ:SPICLK 非アクティブ Low。SPI は、SPICLK 信号の立ち上がりエッジより半サイクル前にデータを送信し、SPICLK 信号の立ち上がりエッジでデータを受信します。
- 送受信の同時動作 (送信機能はソフトウェアで無効化可能)
- トランスミッタとレシーバの動作は、割り込み駆動またはポーリング・アルゴリズムによって実現されます。
- 16 レベルの送信 / 受信 FIFO
- 高速モード
- 遅延付き送信制御
- 3 線式 SPI モード
- 2 つの SPI モジュールを搭載したデバイスでデジタル・オーディオ・インターフェイス受信モードのための SPISTE 反転
図 6-69 に、SPI CPU インターフェイスを示します。