SPIの仕組み

Serial Peripheral Interface(SPI)は,マイコンとその周辺機器のシリアル通信の規格です.複数のデバイスを接続できることや,双方向の通信ができることが特徴です.

この記事ではSPIの仕組みについて解説していきます.

  1. SPIとは?
  2. SPIの概要
  3. SPIの仕組み

SPIとは?

Serial Peripheral InterfaceSPI)は,Motorola社(現在のNXP Semiconductors社)が提唱した,マイコンとその周辺機器のシリアル通信の規格です.

I2Cと並んで,事実上の業界標準となっています.

SPIの概要

SPIでは次の4つの信号を使って通信を行います.

  • MOSI(Master Out Slave In)
  • MISO(Master In Slave Out)
  • SCK(Serial Clock)
  • SS(Slave Select)

SPIでは,デバイスはその役割によってマスタスレーブに分かれています.

マスタは複数接続されたスレーブの中から1つを選び,クロック信号をSCKに出力することで通信を開始することができます.

マスタは通信したいスレーブのSSをLOWにすることで,スレーブを選択します.通信しないスレーブのSSはHIGHにすることで通信から除外することができます.

SPIの仕組み

SPIの動作は次の図のようになります。

マスタが通信したいスレーブのCSをLOWにします。マスタが生成するクロック信号のSCKに合わせて、MOSIとMISOでデータを伝送します。

マスタからスレーブへのデータの送信はMOSI(Master Out Slave In)を使い、スレーブからマスタへのデータの送信はMISO(Master In Slave Out)を使います。

SPICR1

SPIの設定を行うレジスタです.

SPIE(SPI Interrupt Enable Bit)

SPIの割り込みを有効化します.

SPE(SPI System Enable Bit)

SPIを有効化します.SPEがクリアされると,SPIは無効化され,アイドル状態になります.SPISRはリセットされます.

SPTIE(SPI Transmit Interrupt Enable Bit)

SPIの送信割り込みを有効化します.

MSTR(SPI Master/Slave Select Bit)

SPIバスにマスタで動作します.

CPOL(SPI Clock Polarity Bit)

SCKシリアルクロックの極性を決定します.

CPHA(SPI Clock Phase Bit)

データのサンプリングのタイミングを指定します.

SSOE(Slave Select Output Enable)

LSBFE(LSB First Enable Bit)

送信データの順番を指定します.1LSBファーストで0がMSBファーストです.

マスタとスレーブで,クロックの極性(CPOL)とクロックの位相(CPHA)を揃える必要があります.

SPIモードクロックの極性(CPOL)クロックの位相(CPHA)
000
101
210
311
  • アイドル状態でLOW、アクティブでHIGH(CPOL=0)
  • アイドル状態でHIGH、アクティブでLOW(CPOL=1)
  • 1つ目のエッジでサンプリング、2つ目のエッジでシフト(CPHA=0)
  • 1つ目のエッジでシフト、2つ目のエッジでサンプリング(CPHA=1)

注意:デバイスのデータシートを参照してください。

参考文献

NXP Semiconductors “SPI Block Guide V04.01”
https://www.nxp.com/files-static/microcontrollers/doc/ref_manual/S12SPIV4.pdf

お買い物カゴ