今日はspi

ラズパイ3を購入したので、いろいろ試してる。

参考書籍は「RasberryPiで学ぶ電子工作」

 

ブルーバックのこういう実践本にはあまり良いイメージがなかったけど、

この本は結構いいかも。

 

試すICは MCP3208。

spiは連続する1/0の塊(=数値)をI/Oするための4つの端子(信号線)がある。

SCLK:シリアルクロック。同期用。

MISO: Master In Slave Out

MOSI:Master Out Slabe In

CEO:

 

ちなみに、spiは シリアル・ペリフェラル・インタフェース。

IC同士の直接通信をダイレクトに表しているだけの言葉。

spiは、二つの素子 マスタ⇔スレーブ間の通信規格。

 

ここでは ラズパイがマスタ、MCP3208がスレーブ。

 

従って、ラズパイ側のspi端子は以下のように設定する。

 

SCLK...出力に設定。ラズパイ側から通信の同期を指示する。

MOSI...出力に設定。ラズパイ側はマスタなので、Master Out=信号出力。

             ここではMCP3208に、チャンネル0のアナログ値の取得を依頼するための

             コマンドを送信する。

MISO...入力に設定。MCP3208からのAD変換されたデータを受信 Master Inputする。

CEO...出力ポートに設定。マスタ側の独り言を処理するためのポート。

 

・クロックは信号の出力の都度、HIGH→LOWする。

 

・スレーブ(MCP3208)に対して毎回、以下のループ。

   1. CEOをHigh (spi送受信無効)

   2.クロックをリセット(Low)

   3.CEOをLOW (spi送受信開始)

   4. xチャンネルのデータ読みたいコマンド送信

      5ビットデータのループ

        - ビットデータをMOSIに出力(High or Low)

        - クロック HIGH->LOW で送信同期

   5. xチャンネルのデータ受信

      13ビットデータのループ

        - クロック HIGH->LOWで受信同期

        - MISOピンからビットデータ入力(High or Low)

   6. CEOをHIGH (spi送受信無効)

 

さて、まずはサンプルのパイソンプログラムを動作させてみよう。