組み込みのSPI通信プロトコルについて理解する

組み込みのSPI通信プロトコルについて理解する

組み込みシステムの設計では、通信が重要な役割を果たします。プロトコルに従わないと、周辺機器の拡張は非常に複雑で、電力を大量に消費します。ザ・ 組み込みシステム 基本的にシリアル通信を使用して周辺機器と通信します。
UART、CAN、USB、I2C、SPI通信など、多くのシリアル通信プロトコルがあります。シリアル 通信プロトコルの 特性には、高速と低データ損失が含まれます。システムレベルの設計が容易になり、信頼性の高いデータ転送が保証されます。



シリアルデータ通信

電気的にコード化された情報はシリアルデータと呼ばれ、一連のプロトコルを介して1つのデバイスから別のデバイスにビットごとに送信されます。組み込みシステムでは、制御センサーとアクチュエーターのデータがマイクロコントローラーなどのコントローラーデバイスで受信または送信され、データがさらに分析および処理されます。マイクロコントローラがデジタルデータを処理するとき、 アナログセンサー 、アクチュエータおよびその他の周辺機器は、マイクロコントローラに送信される前に1バイト(8ビット)のバイナリワードに変換されます。


シリアルデータ通信

シリアルデータ通信





このシリアルデータは、特定のクロックパルスに関して送信されます。データ転送速度はボー速度と呼ばれます。 1秒あたりに送信できるデータビット数をボーレートと呼びます。データが12バイトであるとすると、各バイトは8ビットに変換され、データ送信の合計サイズはデータの約96ビット/秒(12バイト* 8ビット/バイト)になります。データを1秒に1回送信できる場合、ボーレートは約96ビット/秒または96ボーです。表示画面は1秒に1回データ値を更新します。

シリアルペリフェラルインターフェースの基本

SPI通信はシリアルペリフェラルインターフェースの略です 通信プロトコル 、1972年にモトローラによって開発されました。SPIインターフェイスは、PIC、AVR、およびなどの一般的な通信コントローラで利用できます。 ARMコントローラー 、など。全二重で動作する同期シリアル通信データリンクを備えています。つまり、データ信号は両方向に同時に伝送されます。



SPIプロトコルは、マスター/スレーブ通信に使用されるMISO、MOSI、CLK、SSなどの4本のワイヤーで構成されています。マスターはマイクロコントローラーであり、スレーブはセンサーなどの他の周辺機器です。 GSMモデム およびGPSモデムなど。複数のスレーブは、SPIシリアルバスを介してマスターに接続されます。 SPIプロトコルはマルチマスター通信をサポートしておらず、回路基板内の短距離で使用されます。

シリアルペリフェラルインターフェースの基本

シリアルペリフェラルインターフェースの基本

SPIライン

MISO(マスターインスレーブアウト) :MISOラインは、マスターデバイスの入力およびスレーブデバイスの出力として構成されます。


MOSI(マスターアウトスレーブイン) :MOSIは、マスターデバイスの出力およびスレーブデバイスの入力として構成されたラインであり、データの移動を同期するために使用されます。

SCK(シリアルクロック) :この信号は、マスターとスレーブ間の同期データ転送のために、常にマスターによって駆動されます。これは、MOSIラインとMISOラインを介してデータの移動を同期するために使用されます。

SS(スレーブセレクト)およびCS(チップセレクト) :この信号は、マスターによって駆動され、個々のスレーブ/周辺機器を選択します。スレーブデバイスを選択するための入力ラインです。

SPIシリアルバスとのマスタースレーブ通信

シングルマスターおよびシングルスレーブSPIの実装

ここで、通信は常にマスターによって開始されます。マスターデバイスは最初に、スレーブデバイスがサポートする最大周波数以下のクロック周波数を設定します。次に、マスターは、その特定のスレーブデバイスのチップセレクトライン(SS)をドラッグしてロー状態にしてアクティブにすることにより、通信に必要なスレーブを選択します。マスターは、マスターからスレーブにデータを伝送するMOSIラインに情報を生成します。

マスタースレーブ通信

マスタースレーブ通信

単一のマスターと複数のスレーブの実装

これは、SPIシリアルバスを介した1つのマスターと複数のスレーブを備えたマルチスレーブ構成です。複数のスレーブは、SPIシリアルバスを使用してマスターデバイスに並列に接続されます。ここでは、すべてのクロックラインとデータラインが相互に接続されていますが、各スレーブデバイスのチップセレクトピンは、メーザーデバイスの個別のスレーブ選択ピンに接続する必要があります。

単一のマスターと複数のスレーブ

単一のマスターと複数のスレーブ

このプロセスでは、各スレーブデバイスの制御はチップセレクトライン(SS)によって実行されます。チップセレクトピンはローになってスレーブデバイスをアクティブにし、ハイになってスレーブデバイスを無効にします。

データ転送は、マスターデバイスとスレーブデバイスの両方で、それぞれ約8ビットと16ビットの所定のワードサイズのシフトレジスタを使用して編成されます。両方のデバイスはリング形式で接続されているため、メーザーシフトレジスタの値はMOSIラインを介して送信され、スレーブはシフトレジスタ内のデータをシフトします。通常、データは最初にMSBでシフトアウトされ、新しいLSBが同じレジスタにシフトアウトされます。

マスターとスレーブ間のデータ転送

マスターとスレーブ間のデータ転送

クロックの極性と位相の重要性

一般に、データの送受信は、立ち上がりエッジと立ち下がりエッジのクロックパルスに関して実行されます。高度なマイクロコントローラーには、内部周波数と外部周波数の2つの周波数があります。 SPIペリフェラルは、MISO、MOSI、およびSCLKラインを共有することで追加できます。周辺機器は、ADC、DACなどのようにさまざまなタイプまたは速度です。したがって、さまざまな周辺機器への転送間でSPCR設定を変更する必要があります。

SPCRレジスタ

SPCRレジスタ

SPIバスは、使用するクロックフォーマットを定義するクロック極性(CPOL)とクロック位相(CPHA)を備えた4つの異なる転送モードのいずれかで動作します。クロックの極性と位相クロックレートは、マスターと通信しようとしている周辺機器によって異なります。
CPHA = 0、CPOL = 0:最初のビットは下位信号として開始します。データは立ち上がりエッジでサンプリングされ、データは立ち下がりエッジで変化します。

CPHA = 0、CPOL = 1:最初のビットは低いクロックで始まります–データは立ち下がりエッジでサンプリングされ、データは立ち上がりエッジで変化します。

CPHA = 1、CPOL = 0:最初のビットはより高いクロックで始まります–データは立ち下がりエッジでサンプリングされ、データは立ち上がりエッジで変化します。

CPHA = 1、CPOL = 1:最初のビットはより高いクロックで始まります。データは立ち上がりエッジでサンプリングされ、データは立ち下がりエッジで変化します。

SPIバスのタイミング

SPIバスのタイミング

SPI通信プロトコル

多くのマイクロコントローラーには、すべての送受信データを処理するSPIプロトコルが組み込まれています。データモード操作(R / W)はすべて、SPIプロトコルの制御レジスタとステータスレジスタによって制御されます。ここでは、SPIプロトコルを介してPIC16f877aマイクロコントローラへのEEPROMインターフェイスを観察できます。

ここで、25LC104 EEROMは131072バイトのメモリであり、マイクロコントローラは2バイトのデータを EEROMメモリ SPIシリアルバスを介して。このインターフェースのプログラムを以下に示します。

SPIシリアルバスを介したマスターからスレーブへの通信

SPIシリアルバスを介したマスターからスレーブへの通信

#include
Sbit SS = RC ^ 2
Sbit SCK = RC ^ 3
Sbit SDI = RC ^ 4
Sbit SDO = RC ^ 5
ボイド初期化EEROM()
ボイドmain()
{{
SSPSPAT = 0x00
SSPCON = 0x31
SMP = 0
SCK = 0
SDO = 0
SS = 1
EE_adress = 0x00
SPI_write(0x80)
SPI_write(1234)
SS = 0
}

SPIプロトコルの利点

  • 全二重通信です。
  • 10MHzの高速データバスです。
  • 転送中は8ビットに限定されません
  • ハードウェアのインターフェースはSPIを介して簡単です。
  • スレーブはマスタークロックを使用し、貴重な発振器を必要としません。

これはすべてSPI通信とその マイクロコントローラーとのインターフェース 。この記事への関心と関心に感謝します。したがって、この記事に対するあなたの視点を期待してください。さらに、インターフェースのコーディングと支援については、以下にコメントしてお問い合わせください。

写真クレジット: