メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

SPI 通信のサポート

SPI (Serial Peripheral Interface) は、短距離の高速デバイス間の同期式全二重シリアル通信プロトコルです。SPI プロトコルは単一のコントローラーと 1 つ以上の周辺デバイスをサポートします。コントローラーはバス上のいずれの周辺デバイスとも通信できますが、各周辺デバイスが通信できるのはコントローラーのみになります。

サポート パッケージ ライブラリにある SPI Controller Transfer ブロックを使用すると、他の SPI デバイスとの通信が有効になります。このブロックは、ハードウェアをコントローラー デバイスとして使用する場合にのみ使用できます。

SPI では以下が可能です。

  • 各種のセンサーをボードに接続して温度や圧力などのさまざまな量を測定する。

  • 各種のシールドをボードに接続して Wi-Fi® シールドなどの機能を拡張する。

  • SD カードにアクセスしてデータの格納や使用可能なメモリの拡張を行う。

[コンフィギュレーション パラメーター][ハードウェア実行][SPI properties] セクションで、[SPI clock out frequency (in MHz)]、[SPI mode]、[ビット順] などの SPI のプロパティを設定できます。

SPI ライン

SPI では 4 線式シリアル バスを通信に使用します。SDI、SDO、SCK、および CS です。SDI、SDO、および SCK の各ラインはすべてのデバイスに共通です。SS ラインはそれぞれの周辺デバイスに固有です。

  • SDI (シリアル データ入力) – このラインは SPI コントローラーにデータを送信するための周辺デバイスのラインです。

  • SDO (シリアル データ出力) – このラインは SPI 周辺デバイスにデータを送信するためのコントローラーのラインです。

  • SCK (シリアル クロック) – データ送信を同期するクロック パルスをコントローラーが生成します。

  • CS (チップ セレクト) – これはデバイスに固有です。これは、SPI コントローラーがデバイスを有効および無効にするために使用できる各デバイス上のピンです。この信号は ‘アクティブ Low’ 信号であり、つまりデバイスはその SS ピンが LOW に設定されると周辺デバイスになります。

In Circuit Serial Programming (ICSP) ヘッダーの SPI ラインは、次に示すようにすべてのボードで一貫しています。

データ送信

  • SPI コントローラーは、コントローラーが通信する SPI 周辺デバイスによってサポートされる周波数でクロックを設定します。

  • コントローラーは周辺デバイスの SS ピンを LOW (0) に設定することで周辺デバイスを選択します。コントローラーで一度に選択できる周辺デバイスは 1 つだけです。

  • SPI 転送はそれぞれ全二重伝送であるため、コントローラーが SDO ラインでビットを送信し、それを周辺デバイスが読み取ります。また、周辺デバイスが SDI ラインでビットを送信し、それをコントローラーが読み取ります。

    コントローラーからデータ転送が行われたときに、周辺デバイスでデータの送信をオプトアウトすることはできません。ただし、通信が一方向であれば、周辺デバイスはダミー バイト (通常はすべて 1 かすべて 0) を送信します。同様に、コントローラーが周辺デバイスからデータを読み取る場合、周辺デバイスはコントローラーから送信されたデータを無視します。

  • 転送が完了すると、コントローラーは SCK の切り替えを中止し、ほとんどは SS をプルアップして周辺デバイスの選択を解除します。

  • データ送信時、コントローラーによって選択されなかった SPI バス上の他の周辺デバイスは、SCK と SDO の信号を無視し、SDI を駆動しません。

SPI 転送モード

SPI コントローラーでクロック極性とクロック位相が設定されます。

クロック極性 (CPOL) – バスがアイドル状態のときの SCK 信号の既定値 (HIGH/LOW) です。

CPOL = 0 はバスがアイドル状態のときの SCK の既定値が LOW であることを意味します。CPOL = 1 はバスがアイドル状態のときの SCK の既定値が HIGH であることを意味します。

クロック位相 (CPHA) – クロック データを SCK の LEADING (1 番目) と TRAILING (2 番目) のどちらのエッジでサンプリングするかを示します。

CPHA = 0 は SCK の LEADING エッジでサンプリングすることを意味し、CPHA = 1 は SCK の TRAILING エッジでサンプリングすることを意味します。クロック エッジが RISING であるか FALLING であるかは関係ありません。

極性と位相の組み合わせを SPI モードと呼びます。SPI モード 0 ~ 3 を表に示します。

モードクロック極性 (CPOL)クロック位相 (CPHA)
000
101
210
311

モード 0

Mode 0

モード 1

Mode 1

モード 2

Mode 2

モード 3

Mode 3