SPIインターフェイス(シリアルペリフェラルインターフェイス)バスは、高速3線式シリアル通信プロトコルです(SSnを含む場合は4-下記参照)。 主な目的は、従来のパラレルバスをシリアルインタフェースに置き換えることにより、PCB上の配線ルーティングを削減することです。 (いくつかの層PCBを介して8ビットバスをルーティングすることはできますが、16、32ビット以上になるとはるかに困難になります)。,
接続は次のとおりです。
- MOSI(マスターアウトスレーブイン)。
- 味噌(マスターインスレーブアウト)。
- SCK(スレーブクロック)。
- SS_n(スレーブ選択)。
-PIC命名法を示します
注:最後の信号SSまたはスレーブ選択はプロトコルとは別であり、通常はマイクロコントローラからのイネーブル制御ピンとして実 完全性のためにここに含まれています。
SPI PICインタフェースにより、高速シリアルインタフェースを使用した周辺機器の接続が可能です。 SPI FlashMemoryおよびSPI SRAMは、どのシステムにも簡単に追加できます。, その他のタイプのデバイスには、
- ADCが含まれます。
- DAC.
- フラッシュします。
- EEPROM.
- アクセラメーター。
- 液晶ディスプレイ。
- 温度&湿度センサー。
..そして、より多くの。
それだけで他の本当の競争は、あなたが多くの場合、プロセッサとマイクロコントローラ上で利用可能な両方のこれらのインターフェイスを見る理由であるI2Cバスです。
SPIインタフェースは1970年代にモトローラによって設計され、68000プロセッサで使用され、すぐに他の多くのメーカーによってデファクトスタンダードとして採用されました。,
これは、マスタデバイスから短距離および高速(MHz)での一つ以上のslavedevicesへのデータの送信を意図しています。
それはどのように動作します
これは、クロック信号(SCK)を送信するマスタデバイスと二つのデバイス間で一度にデータ一ビットを転送すること クロックは、データ転送のタイミングを制御します。
データ(MOSI)は、クロック信号(SCK)とともにマスタSPIデバイスのシフトレジスタから送信され、同時に別のシフトレジスタがスレーブ(MISO,)からデータを受信します。,
マスターは常に制御され、クロック信号を使用してデータ転送を開始します。 スレーブデバイスは、ソフトウェア制御される別のスレーブ選択信号を使用して選択されます。
注:ビット数はプロトコルによって定義されていないため、8のみを使用することに限定されません。 これは、各デバイスに必要なすべてのビットの合計にビット数を設定する必要があるため、SPIスレーブをデイジーチェーンするときに便利です。,
メモ:SPIは単一のマスターシステムを定義します。
代替プロトコルIICは、複数のバスマスタ動作を可能にします。
SPIインタフェース-クロック定義
SPIクロックはまったく定義されていません-つまり、異なるスレーブ-デバイスが異なるクロック動作を想定できる その他に反応してしまいますの立ち上がりエッジが反応し、立ち下がりエッジの!,
SPIインタフェースprotoclに対応する教育プログラムこれらの詳細は、SPIハードウェアモジュールです。
以下の図は、SPIのPICインタフェースを示しています(他のマイクロコントローラのすべてのSPIハードウェアモジュールは、異なるレジスタを使用するだけで同じ,
SPIインタフェースPIC信号(PICデータシートDS39582Bからの抜粋)
スレーブ選択信号によってアクティブ化されたときにデバイスに正しいクロックを設定するのはあなた次第です(または、単一のスレーブの場合は常に選択されるため、スレーブ選択信号はありません)。
Arduino SPI接続
次の図は、ATmega328pの直接プログラミングを可能にするArduinoボード上のプログラミングコネクタ(ICSP)であるSPI接続へのインタフェースを示,p>
5 – Reset
6 – GND
Location of the SPI connector on Arduino Uno R3
Photo Credit : kenming_wang (mod shows ICSP)
Different SPI Interface operational Modes
There are three ways of using the SPI interface
- Single Master – Single Slave.,
- シングルマスター-複数のスレーブ-チップを選択しました。
- シングルマスター-複数のスレーブ-Dasiy連鎖しました。
シングルマスター-シングルスレーブ。
単一のSPIデバイス接続の設定は次のとおりです。
注:チップセレクト信号SSは、単一のデバイスシステムではオプションです。,
SIPインターフェイス:チップ選択を使用して
このスキームでは、そのチップ選択ライン(通常はアクティブな低赤い矢印はcontrollinesを示しています)を使用して、各スレーブデバイスを制御します。 ディスエーブルされると、スレーブからのデータ出力はハイインピーダンス状態になるので、現在選択されているスレーブと干渉しないようになり、スレーブのデータ入力は無視されます(checkdatasheet)。,
この方式の利点は、デイジーチェーン方式と比較するときに各デバイスを個別に検討(制御)できることであり、異なるクロック方式を必要とするSPIデバイスの接続が可能である。
異なるクロック(エッジ/アイドル状態)を使用して動作するSPIスレーブがある場合は、特定のCSをイネーブルする前にマスタSPIハードウェアモジュールを再プログラムすることができます。
デイジーチェーン方式を使用する場合は、すべてのチップが同じクロックエッジとアイドルクロック状態を使用することを確認する必要があります。,
SPIInterface:Daisy chaining
このスキームでは、マスターによって送信されるすべてのデータがすべてのデバイスにシフトされ、各デバイスから送信されるすべてのデータが次のデバイスにシフトされます(赤い点線の矢印で示されます)。 このスキームが機能するには、各スレーブが同じ方法でクロックを使用し、適切なビット数を取得する必要があることを確認する必要があるため、ソフトウェアでより多くの作業が行われます。
メモ:デイジーチェーン方式の利点は、各スレーブSPIデバイスのチップ選択信号を保存することです。
ウィキペディアの詳細。,
SPIインタフェースデイジーチェーン
SPIデイジーチェーンの例
デイジーチェーンリンクされた複数のHC595チップを使用することで、多くのマイクロコントローラピンを使用せずに使用可能な出力数を容易に増加させることができます。
動作の制限は、HCの速度、SPI出力の速度です。 また、20msごとに更新する必要があるLedのセットを駆動する場合など、設計上の考慮事項もあります。
Parallel Versus Serial SPI
パラレル-インターフェースとSPIインターフェースの使用との間のトレードオフは速度です。, パラレル12bit ADCを200kspsで読み取ると、デバイスata200kHzレートを読み取ることができますが、SPIを使用して同じデータレートを取得する場合は、200kHz x12=2.4MHzのシリアル速度が必要です。 従ってtheactualトレードオフは速度および必然的な騒音introducedinto回路です。
概要
SPIインタフェースは、高速で動作する非常に一般的なプロトコルを定義します。 主な問題は、スレーブデバイスが特定のクロッキングスキームに縛られていないため、互いに異なる動作をする可能性があり、それらを制御することが, clock idleとedgeは、各デバイスに対して正しく設定する必要があります。
メリット:
- 高速です。
- ソフトウェアで複製するのは簡単ですExremelyシンプルなインターフェイス。
短所:
- スレーブチップは、必要なクロッキング方式を自由に採用できます。