今日は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送受信無効)
さて、まずはサンプルのパイソンプログラムを動作させてみよう。