SPI通信について、使う側の立場から、ざっくりとまとめてみました。
SPI通信とは? SPI通信の特徴
マイコンとIC間のやりとりに、よく使われる同期式シリアル通信です。その特徴をまとめると、こんな感じです。
- 「マスタ」、「スレーブ」がある
- クロックはマスタが出す
- クロック、データout、データin、GNDで接続
- マスタがCS(チップセレクト)で通信する相手を選ぶ(基本的にマスタとスレーブの1対1の通信)
- シフトレジスタのイメージで送受信
- 送受信は同時に行われる
- クロックとデータ送り出しの組み合わせ、MSBファーストかLSBファーストか、CSが正論理か負論理か、など色々種類がある
- 波形の電圧レベルは、電源電圧("H")とGND("L")
- データの論理は正論理(NRZ)
SPI通信の特徴(もう少し詳しく)
「マスタ」、「スレーブ」がある
「マスタ」と「スレーブ」があり、通信はマスタが主導して行います。
クロックはマスタが送出します。このクロックに合わせて通信が行わるので、送受信をいつやるか?等は全てマスタが管理することになります。
クロック、データout、データin、GND、(CS)で接続
※CS(チップセレクト)も使う場合は必要です。
マスタがCS(チップセレクト)で通信する相手を選ぶ(基本的にマスタとスレーブの1対1の通信)
1つのマスタに対して、複数のスレーブを接続することができます。その場合は、マスタがCSによって通信したいスレーブを選択して、選択したスレーブと1:1通信をすることになります。そのため、CS信号は、接続するスレーブの数だけ(マスタに)必要となります。
また、CS信号はスレーブによって正論理の場合と、負論理の場合があるので注意が必要です。
シフトレジスタのイメージで送受信、送受信は同時に行われる
SPI通信は、クロックに合わせて1bitずつシフトさせて、マスタ側とスレーブ側のデータを交換します。シフトレジスタの動作イメージです。(というか、ほぼシフトレジスタそのもの)
1bit押し出された分、1bit受け取る。という動作になるので、送受信は同時に行われます。クロック8つで、マスタ側、スレーブ側のそれぞれ1byte分のデータを交換することになります。
上図はLSBファーストの場合です。MSBファーストの場合は、bitが逆回りにシフトします。
クロックとデータ送り出しの組み合わせ、MSBファーストかLSBファーストか、CSが正論理か負論理か、など色々種類がある
クロックの極性(アイドル"L"or"H")と送受信データをいつシフトするか(立上りor立下り)の組み合わせで、SPI通信は大きく4つのモードに分かれます。
モードについてはこちら→(SPI通信は「モード」に注意! SPI通信は4種類ある!)
他にも、データをMSBから送信する(MSBファースト)か、LSBから送信する(LSBファースト)か?、CSは正論理か負論理か?など、使いたいICによって違いがあります。
波形の電圧レベルは、電源電圧("H")とGND("L")、データの論理は正論理(NRZ)
SPI通信のデータは正論理(電圧Hが論理1、電圧Lが論理0)で、電圧レベルは電圧Hが電源電圧、電圧LがGNDとなっています。
データはクロックの立ち上がりor立ち下がりでサンプリングされます。そのため、送受信データは、論理が"1"の間はずっと電圧"H"になります。(毎回電圧"L"に戻ったりはしない)
0 件のコメント:
コメントを投稿