詳細なSPI

1、SPI紹介

シリアル・ペリフェラル・インターフェースで名前が示すようにSPIは、英語のシリアル・ペリフェラル・インターフェースの略です。モトローラは最初のプロセッサのそのMC68HCXXファミリに定義されています。SPIインターフェースは、主EEPROM、FLASH、リアルタイムクロック、AD変換器、及びデジタル信号プロセッサとデコーダとの間のデジタル信号に使用されています。SPIは、高速、全二重、同期通信バスであり、PCBレイアウト上のスペースを節約しながら、ICへの保存、チップのピンにのみ4本のワイヤを占有し、利便性、n個この簡単に使用できる機能のうち、今より多くのチップは、この通信プロトコルを統合しています。
2、SPIは、特徴
主要用いて2.1 -制御モード(マスタ・スレーブ)の

通信時間を予め定められたSPI 2つのSPIデバイスとの間でマスタ(マスタ)によって装置(スレーブ)を制御しなければならない。マスターデバイスがチップならびにスレーブスレーブクロック装置を提供することにより、複数のデバイスを制御することができるセレクト(スレーブ選択)スレーブSPIプロトコルはまた、SCKピン装置を介してスレーブデバイスにクロックマスターが提供する装置を提供する、デバイス自体は、スレーブクロック無しスレーブ・クロックや制御が、正常に動作しなく生成することができません

送信データに対して2.2同期モード(同期)

デバイスが交換されるデータ、クロック信号(クロック信号)のクロックパルスに応じて対応するマスタークロックパルス(クロックパルス)を生成し、SPIクロック極性(CPOL)とクロック位相(CPHA)を介して、二つのクロック信号を制御しますデータ装置との間の交換、及び場合受信されたデータサンプルは、2つのデバイス間のデータの同期を確保するときに送信されます。

2.3データ交換(データ交換)

所定のプロトコルSPI SPIデバイスは、単にデータ通信中の「送信者(送信)」または「受信者(受信機)」として作用することができないため、デバイス間のSPIデータ送信が理由も、データ交換として知られている。に各サイクルにおけるクロック、SPIデバイスが送信したデータの1ビットのサイズを受信すると、デバイスは、交換されるデータのサイズに対応するビットを有している。制御信号を受信することができるようにするために、スレーブ装置は、マスタ上で送信され、これがなければなりませんそれはアクセスすることができる前に、(アクセス)マスタデバイス。したがって、マスタースレーブデバイスは、第1チップデバイスはSS / CSピンによって選択される必要があり、装置がアクセスしたいスレーブから選択される。データ伝送の過程において、各受信次のデータは、データ転送の前にサンプリングされなければならない。受信したデータが前に読み込まれていない場合、これらのデータは、完了を受信した可能性が高いSPI物理モジュールの最終的な障害の原因となる、ドロップされます。このように、手順を一般データの後にSPI転送は、SPIデバイスにデータを読み出す場合でも、当社の手順でデータ(ダミーデータ)それは無用です。
4つの伝送モード2.4 SPIがあります。

トリガ後縁の立ち上がりエッジ、立ち下がりエッジ、立ち上がりエッジ、。もちろん、そこにMSBとLSBの送信。

わずか2.5 SPIマスタおよびスレーブモードを指します。

各SPIは、本質的に、マスタデバイスからデータを交換しているのでない、と言って読み書き。言い換えれば、あなたは、データを受信するためにバインドされたデータを送信する、あなたはまた、データを送信しなければならない最初のデータを受信したいです。
3、作業メカニズム
3.1概要

:SPIデバイス間の通信のちょうど簡単な説明図は、以下の図に示されているいくつかの構成要素(Module1の)について説明する
SSPBUF、同期シリアルポートバッファは、一般に、内部バッファ内のSPIデバイスを指しFIFOの物理的形態、送信時の一時的なデータ記憶装置である。
SSPSR、シフトレジスタSPIデバイス(シフトRegitser)を指す同期シリアルポート、レジスタが、その役割は、設定データビットに応じて良い(ビットであります-width)データへまたはSSPBUFのうち、
コントローラは、SPI制御レジスタは、そのSPIバス構成の伝送モードによって設定することができる装置を指します。

前の図で説明したように、典型的には、我々は、SPIデバイスとの間の全体のデータ通信を制御するようにプログラムすることができる唯一の4つのピン(ピン)が必要:
SCK、シリアル・クロックを、主な役割は、マスタスレーブデバイス搬送装置のクロックでありますデータ交換のタイミングおよび速度を制御する信号、
SS / CS、選択スレーブ/チップ選択されたデバイスがスレーブマスタ装置によってアクセスすることができるように選択し、マスタスレーブチップ用選択装置;
SDO / MOSI、出力シリアルデータ/マスター出力スレーブで、また主にデータを送信するためのSPI装置に使用されるデータのエクスポートとして、マスターのTxチャネルに上方呼ば、
SDI / MISO、データのシリアル入力/マスター出力スレーブに、上記マスタはまた、受信において参照されますデータ入力として-channel、データSPIを受信するための主装置と、
図に描かれたようにSPI通信を行う処理装置は、マスター装置とスレーブ装置との間のループバックデータリンク(データループ)を生成します。 SDIとSDOピンを介して、上方、SSPSR制御データがSSPBUF内および外に移動され、コントローラは、SPIバス、SCK伝送クロック信号の通信モードを決定します。

3.2タイミング

図は、マスタデバイスとスレーブデバイス1バイトのデータ交換との間の機構SPIプロトコルによって説明します。

まず、ここでの位相と極性の概念を説明します

3.2.1 SPI関連の略語またはステートメント

SPI極性極性と位相相、最も一般的なCPOLとCPHAの書き込みが、いくつかの他の製剤があり、次のように簡単に要約される:
(1)CKPOL(クロック極性)POL = = = CPOL極性=(クロック)極性
(2 )CKPHA(クロック位相)= CPHA = PHA =位相=( クロック)相
(3)SCK = SCLK = SPIクロック
(4)エッジ=エッジ、すなわちクロックレベル変化のタイミング、すなわち、立ち上がりエッジ(立ち上がりエッジ)またはエッジ(立ち下がりエッジ)の立ち下がり
クロック・サイクルの二つのエッジが存在するが呼び出されている:
最初のエッジの= =前縁先端は、開始電圧の開始に、一方が0になったときその結果、あります;電圧は、0であり、それは1のとき0となる
開始電圧は、時間は、最初に0から1(すなわち、1 0であり、1であると、後縁後端= =第二エッジの後、それは0~1の背後に有していてもよい)、開始電圧がゼロであるため、それは0場合に1です。

3.2.2 SPI極性相と

:CPOLとCPHA、それぞれ、4つの組み合わせに対応する0又は1であるとすることができる
モード0 CPOL = 0、CPHA = 0
モード1 CPOL = 0、CPHA = 1
モード2 CPOL = 1、CPHA = 0
モード3 CPOL。 1 =、= CPHA。1
CPOLの3.2.3極性

どのようなことが言われている第一のクロックSCLKアイドル時間、場合SCLKの数の後と、これに対応する、8ビットのデータ・ビットを送信する前の状態ときに送信データが通常の作業、アクティブ有効であるSCLK瞬間。
クロック極性= SCKのIDLE状態:そのように解釈を合理化するために、英語を話すための最初の 。
詳細な中国語は、次に
アイドル時間がアイドル状態のときCPOLのSPIは、SCLKは、レベル0が低又は高であるの値を示している:1。
CPOL = 0、アイドルアイドルタイムクロックレベルは、ローレベルであります有効時間SCLKが高い場合、高活性ないわゆる;
。CPOL = 1、アイドルアイドルタイムクロックがハイレベルであり、効果的な時間SCLKが低いときに、アクティブいわゆること-低;
3.2.4位相CPHA

最初のポイントは、捕捉ストローブ=ラッチ=読み取り=サンプル、 サンプルは、データ有効タイミングを示すデータです。位相は、データサンプルの数に対応する最初のエッジ(エッジ)に示すように、第1エッジ又は第二端、第二エッジに対応する0に対応する最初のエッジ、1です。
:のため
= 0 CPHA、最初のエッジを表す:
CPOL = 0の場合は、アイドル時間が低く、第一エッジは、ローからハイに立ち上がりエッジであり、
CPOL = 1のため、アイドル時間であります高いレベルは、最初のエッジがハイからロー、立ち下がりエッジであり;
CPHA = 1、第二エッジ示す:
CPOL = 0のため、アイドル時間が低く、高から第二エッジであります低、立ち下がりエッジとなり、
アイドル時間が高いCPOL = 1のため、第一エッジは立ち上がりエッジ、ローからハイに変化します。

我々は数字を理解することが容易である
極性と位相を設定する方法3.2.5ソフトウェアをSPI

両方のSPI通信プロトコルを介して、SPIマスタとスレーブポイント。
デバイスのモードから、SPIモードを設定し、マスタ・デバイスのモードを決定します。
それではSPIデバイスからどのようなモードでは、マスタデバイスのSPIモードと、通常の通信に同じデバイスモードから提供された知るために行くことに。
どのモードからSPIデバイスのために二つある:
固定3.2.5.1を決定する、ハードウェアSPIスレーブが存在します

SPIスレーブデバイスは、特定のモードが何であるか、関連するデータシートで説明する、データシートに関連する彼らのニーズを記述することがわかった:
、SPIスレーブについて、自分の空き時間に、高いか低いその決定をCPOLは0または1であり;
そしてその後、所定の前提値CPOLに、そのよう、落下やサンプルデータに立ち上がりているデバイスを検索し、CPHAの対応は0または1で算出することができます。
ソフトウェア単独では3.2.5.2設定可能なセット

SPIは、それらが特定のパターンに設定することができる限り、このとき、4つのモードがサポートされ、スレーブコントローラです。
次に、デバイスのモードから知っていることであるとわかるように、スレーブモードが提供され、SPIマスタモードになります。
、SPI CPOLとCPHAの単語を構成する少し手の込んだ、ほとんどは2つのCPOLとCPHA SPIコントローラはに対応するライト1または書き込み0に対応することを登録するには、直接書かれている方法。
SSPSR 3.3
SSPSR SPIデバイスは、内部シフトレジスタ(シフトレジスタ)である。その主な役割は、移動バス幅およびチャネル幅によるに各データサイズのSSPBUFアウトデータに、SPIクロック状態信号に応じました決断。
バス幅のアクションは、マスタデバイスへのアドレスバスとの間のデータ転送の単位を指定されている。
例えば、我々はSSPBUF内部の16バイトサイズマスタデバイスへの書き込みデータにしたい:まず、デバイス・コンフィギュレーション・レジスタは、マスターバス幅を提供しましたバイトであり、マスタデバイスは、その後シフトに書き込まれる(WRITEB機能を使用して)各データ1バイトサイズ、送信データは、データ・エントリ・アドレスバスに書き込まれるレジスタと1バイトのデータを書き込んだ後、デバイスをマスターTxの内部-dataシフトレジスタは自動的にSSPBUFに1つのバイトデータのアドレスバスから転送され、繰り返し上述の動作は、16回の合計を必要とします。
チャネル幅の役割は、マスタデバイスとスレーブデバイスユニットとの間のデータ転送を指定することである。バス幅と同様のデバイスのシフトレジスタ内部マスターチャネル幅に応じて自動的にマスターSSPBUFのデータからマスターSDOによってスレーブ-SDIピンの転送ピンに対するスレーブ装置、スレーブSSPSR、受信したデータを各スレーブSSPBUFにする。通常、バス幅は常によりも大きいか、チャネル幅に等しく、これは保証するであろうこれは、データが無効であるような場合の内部に格納されているSSPBUFその結果、より高速によりアドレスバスとマスターとの間のデータ交換の頻度よりもマスターとスレーブとの間で交換されるデータの周波数に発生していない。
3.4 SSPBUFを

我々は、各クロックサイクルの間データは、マスタとスレーブSPI交換が内部シフトからコピーされSSPBUFを登録することを知っている我々ができSSPBUF対応するレジスタに送信(Tx-データ/ Rxの、データレジスタ) データの読み書きに、間接的にSPIデバイス内SSPBUFに制御されている。
例えば、データを送信する前に、私たちはマスターのTxデータに送信するデータを書き出す登録する必要があり、これらのデータは、シフトレジスタのマスター-SSPSRに従っていますバス幅マスターSSPBUF自動的に移動し、データがスレーブ-SDIピンマスターSDOピンを通過したチャネル幅に記載のマスターSSPSRマスターSSPBUFから削除され、スレーブSSPSRから入れスレーブ-SDIは、スレーブ・SSPBUFにデータを受信すると同時に、スレーブSSPBUFデータの各サイズは、スレーブ・SDOマスター-SDI、マスターSSPSRによって送信され受信されたデータ(チャネル幅)に記載の内部マスターSSPBUFにマスター-SDIデータから受け取った。単一のデータ転送が完了した後、ユーザは、マスター主装置のRxデータから読み取るように装置をプログラムすることができ、データをレジスタ 交換データ取得。
コントローラーの3.5

主に、クロック信号(クロック信号)とスレーブデバイスを制御する。スレーブ装置待つチップセレクト信号を介して送信され、マスタデバイスを受信するまで、チップセレクト信号(スレーブ選択信号)、クロック信号によってコントローラ内部のマスター装置ワーク
ピースのようなプログラムにより実現マスター装置の操作から選択しなければならない:プログラムクロック信号をSS / CS端子にローに引っ張られ、準備作業は、SPIデータ通信装置を完成する; SPIプログラムエンドデータ通信を望んでいます。クロック信号は、SS / CSピンがハイに引っ張られたとき。
4.例えばSPI

それはそんなに、私はあなたが理解するための例を与えるためにここにいると言います。
SPIは、SS(CS)、SCK、SDIによってリングバス構造であり 、SDOの構成、そのタイミングは、主にSCKの制御下で、データ交換のための2つの双方向シフトレジスタは非常に簡単です。
次の8ビットレジスタを仮定すると、最初の高い伝送を受信下がり、送信が立ち上がり、送信すべき10101010のデータをロードされます。
そうするときに、データの最初の立ち上がりエッジはSDO = 1である; = 0101010xを登録します。場合SDIのレベルレジスタに入り、レジスタ時間= 0101010sdiので、8つのクロックパルスを、二つのレジスタの内容は相互交換後こと、立ち下がりエッジ。これは、SPIタイミングで完了します。
例:
仮定するホストとスレーブの準備ができて初期化:マシンからホストsbuff = 0xAAを、sbuff = 0x55を、プレゼンテーションの8つのクロックサイクルを再びSPIデータの次のステップ:立ち上がりエッジを想定したデータを送信します

これは、上面の立ち上がりエッジで表される2つの8ビット・レジスタ、ホストへの落下を示し、SDI、SDOの相対的な交換を完了する。非常に近い理解するために、次のステップは、アニメーションの中に上記のプロセスを置くことです

この記事は、CSDN、ハードウェア万の疑問の解消から再生されます

发布了48 篇原创文章 · 获赞 2 · 访问量 4053

おすすめ

転載: blog.csdn.net/qq_45683435/article/details/104457958