4線式SPI



4 Wire Spi



SPIマスターはスレーブにデータを送信し、スレーブは受信したデータを返送して、送信が正常であることを確認します。

SPIは リング通信 つまり、SPIホストがMISOからデータを読み戻すとき、送信時にマシンから送信されたことを読み取ります。 SPIキャッシュ



シリアルペリフェラルインターフェイス(SPI)は、マイクロコントローラーと、センサー、ADC、DAC、シフトレジスタ、SRAMなどの周辺ICとの間で最も広く使用されているインターフェイスの1つです。

SPIは、同期、全二重、マスタースレーブインターフェイスです。マスターまたはスレーブからのデータは、クロックの立ち上がりエッジまたは立ち下がりエッジで同期されます。マスターとスレーブは同時にデータを転送できます。 SPIインターフェースは3線式または4線式にすることができます。この記事では、一般的に使用される4線式SPIインターフェースに焦点を当てます。



インターフェース

4線式SPIデバイスには4つの信号があります。

  • クロック(SPICLK、SCLK)
  • チップセレクト(CS)ホスト出力
  • スレーブ入力(MOSI)マスター入力
  • スレーブ出力(MISO)

クロック信号を生成するデバイスをホストと呼びます。マスターとスレーブ間で転送されるデータは、マスターによって生成されたクロックと同期されます。 SPIデバイスは、I2Cインターフェイスよりも高いクロック周波数をサポートします。 SPIインターフェイスのクロック周波数仕様については、製品データシートを参照してください。



SPIインターフェースは1つのホストのみを持つことができますが、1つ以上のスレーブを持つことができます。図1は、マスターとスレーブ間のSPI接続を示しています。

図1.マスターとスレーブを使用したSPI構成

マスターからのチップセレクト信号は、スレーブを選択するために使用されます。これは通常アクティブロー信号であり、ハイにプルされるとスレーブはSPIバスから切断されます。複数のスレーブを使用する場合、マスターはスレーブごとに個別のチップセレクト信号を提供する必要があります。この記事のチップセレクト信号は常にアクティブロー信号です。

MOSIとMISOはデータラインです。 MOSIはマスターからスレーブにデータを送信し、MISOはスレーブからマスターにデータを送信します。

データ送信

SPI通信を開始するには、マスターはクロック信号を送信し、CS信号を有効にしてスレーブを選択する必要があります。チップセレクトは通常、アクティブロー信号です。したがって、マスターはスレーブを選択するためにこの信号でロジック0を送信する必要があります。 SPIは全二重インターフェースであり、マスターとスレーブはそれぞれMOSIラインとMISOラインを介してデータを同時に送信できます。 SPI通信中、データの送信(MOSI / SDOバスへのシリアルシフトアウト)と受信(バス上のデータのサンプリングまたは読み取り(MISO / SDI))が同時に発生します。シリアルクロックは、同期データに沿ってシフトおよびサンプリングされます。 SPIインターフェースにより、ユーザーはクロックの立ち上がりエッジまたは立ち下がりエッジを柔軟に選択して、データをサンプリングおよび/またはシフトできます。 SPIインターフェイスを使用して転送されるデータビット数を確認するには、デバイスのデータシートを参照してください。

クロック極性とクロック位相

SPIでは、ホストはクロック極性とクロック位相を選択できます。アイドル状態の間、CPOLビットはクロック信号の極性を設定します。アイドル状態とは、送信開始時にCSがハイレベルでローレベルに遷移する期間と、CSの終了時にCSがローレベルでハイレベルに遷移する期間を指します。転送。 CPHAビットはクロック位相を選択します。 CPHAビットの状態に応じて、クロックの立ち上がりエッジまたは立ち下がりエッジを使用して、データをサンプリングおよび/またはシフトします。ホストは、スレーブの要件に基づいてクロック極性とクロック位相を選択する必要があります。 CPOLビットとCPHAビットの選択に応じて、4つのSPIモードを使用できます。表1に、これら4つのSPIモードを示します。

表1.CPOLおよびCPHAを介したSPIモードの選択

図2から5は、4つのSPIモードでの通信の例を示しています。これらの例では、データはMOSIおよびMISOラインに表示されます。送信の開始と終了は緑の点線で示され、サンプリングエッジはオレンジの点線で示され、シフトエッジは青い点線で示されます。これらのグラフィックは参照用であることに注意してください。 SPI通信を成功させるには、ユーザーは製品データシートを参照し、デバイスのタイミング仕様が満たされていることを確認する必要があります。

図2.SPIモード0、CPOL = 0、CPHA = 0:CLKアイドル状態=ロー、データは立ち上がりエッジでサンプリングされ、立ち下がりエッジでシフトアウトされます

図3に、SPIモード1のタイミング図を示します。このモードでは、クロック極性は0であり、クロック信号のアイドル状態が低いことを示しています。このモードのクロック位相は1であり、データが立ち下がりエッジ(オレンジ色の破線で示されている)でサンプリングされ、データがクロック信号の立ち上がりエッジ(青い破線で示されている)でシフトアウトされていることを示します。

図3.SPIモード1、CPOL = 0、CPHA = 1:CLKアイドル状態=ロー、データは立ち下がりエッジでサンプリングされ、立ち上がりエッジでシフトアウトされます

図4.SPIモード2、CPOL = 1、CPHA = 1:CLKアイドル状態=ハイ、データは立ち下がりエッジでサンプリングされ、立ち上がりエッジでシフトアウトされます

図4に、SPIモード2のタイミング図を示します。このモードでは、クロック極性は1であり、クロック信号のアイドル状態がハイであることを示しています。このモードのクロック位相は1であり、データが立ち下がりエッジ(オレンジ色の破線で示されている)でサンプリングされ、データがクロック信号の立ち上がりエッジ(青い破線で示されている)でシフトアウトされていることを示します。

図5.SPIモード3、CPOL = 1、CPHA = 0:CLKアイドル状態=ハイ、データは立ち上がりエッジでサンプリングされ、立ち下がりエッジでシフトアウトされます

図5に、SPIモード3のタイミング図を示します。このモードでは、クロック極性は1であり、クロック信号のアイドル状態がハイであることを示しています。このモードのクロック位相は0であり、データが立ち上がりエッジ(オレンジ色の破線で示されている)でサンプリングされ、データがクロック信号の立ち下がりエッジ(青い破線で示されている)でシフトアウトされていることを示します。

マルチスレーブ構成

1つのSPIマスターで複数のスレーブを使用できます。スレーブは、通常モードまたはデイジーチェーンモードで接続できます。

従来のSPIモード

通常モードでは、ホストはスレーブごとに個別のチップセレクト信号を提供する必要があります。ホストがチップセレクト信号を有効(プル)にすると、MOSI / MISOラインのクロックとデータを選択したスレーブに使用できます。複数のチップセレクト信号が有効になっている場合、ホストはどのスレーブがデータを送信しているかを認識できないため、MISOライン上のデータが破損します。

図6からわかるように、スレーブの数が増えると、ホストからのチップセレクトラインの数も増えます。これにより、ホストが提供する必要のある入力と出力の数が急速に増加し、使用できるスレーブの数が制限されます。マルチプレクサを使用してチップセレクト信号を生成するなど、他の手法を使用して通常モードでスレーブの数を増やすことができます。

図6.マルチスレーブSPI構成