PICマイコンでSPI通信のやり方(マスタ側)

2024/03/10

PIC 通信

t f B! P L

PICマイコンのSSPモジュールを使用して「SPI通信」をする方法(マスタ側)を、ざっくりとまとめてみました。

SSPモジュールの設定(SPIマスタの場合)

データを送受信する前に、SSPモジュールの設定を行う必要があります。

設定する必要があるレジスタは、主に「SSPSTAT」「SSPCON」のふたつです。

SSPモジュールの設定(SPIマスタ)

設定する項目は「SMP」「CKE」「SSPEN」「CKP」「SSPM3~0」です。

  • SMP → 入力データのサンプリングタイミング設定
  • CKEとCKP → SPIモードの設定
  • SSPEN → SSPモジュルの許可("1"とする)
  • SSPM3~0 → SSPモジュルの動作モードとクロック設定

他にも、TRISレジスタによって、SPI通信に使用するピンの入出力方向を設定しておく必要があります。

マスタ側なので、

  • SCK:出力
  • SDO:出力
  • SDI:入力
  • CS:出力

とします。CSはSSPモジュルで操作されるものではなく、汎用出力として使用します。

(関連記事:PICマイコンでのSPI通信(SSP) SPIの"モード”設定のやり方
(関連記事:SPI通信は「モード」に注意! SPI通信は4種類ある!

データの送受信のやりかた(マスタ側)

PICの内蔵モジュールを使用して、SPI通信にて1byteを送受信する手順は以下の通りです。

SPIでデータ送受信する手順(マスタ側、1byte分)
  1. 「SSPBUF」に送信データを書き込む
    →書き込むと、クロックが出力されて送受信が開始される
  2. SSPIFが"1"となるまで待つ
  3. SSPIFが"1"となったら、SSPBUFから受信データを読み出す
  4. SSPIFをクリアする

Nバイト分、送受信したい場合には、これをN回繰り返します。

また、通信の開始と終わりには、CS(チップセレクト)を操作します。通信の開始時にCSを有効側にセットし、通信終了時にCSを無効側にセットします。CSは負論理であることが多いですが、正論理のICもあります。

全体としては、こんなイメージになります。CSは負論理、3byteのデータを送受信する場合です。

SPIで3byte連続で送受信するイメージ図

「1byte分」のブロックは、上記の「1byteを送受信する手順」を示します。

当ブログはアフィリエイト広告を利用しています。

このブログを検索

最新記事

ブログ運営者:そのへんの誰か


このブログのURL

QooQ