気圧センサSCP1000を接続してみる(1)
最近は、SPIのディジタル通信機能をもったセンサが多くなっています。Arduinoの標準のライブラリにはSPIの処理を行う機能は用意されていません。一方、Ardunoのマイコン・ボードに使用されているマイコンのATmega168/328チップ自体は、SPIの通信の機能を内蔵しています。その機能を利用してSPI通信処理を行ってみます。
SPI通信
ArduinoでのSPI通信は、Arduinoのマイコン・チップに内蔵されているSPIの通信機能を用いて行います。そのため次の図に示すように、SPIの通信に必要な信号線が特定のピンに割り当てられています。
ディジタル入出力 13 SCK(SPIのクロック信号線)
ディジタル入出力 12 MISO(スレーブからマスタへの信号線)
ディジタル入出力 11 MOSI(マスタからスレーブへの信号線)
ディジタル入出力 10 SS(スレーブの選択信号線)
と決められています。
マイコン・チップのピン配置
Arduino Duemilanove(328P)のマイコン・ボードには、次に示すATmega328のマイコン・チップが搭載されています。
SPIの通信
SPIはSerial Peripheral Interfaceの略で、クロックと送受信の計3本の信号線で通信を行い、2線式のシリアル通信(I2C)より高速な通信が可能となっています。
通信は、マスタおよびスレーブのそれぞれの8ビットのシフトレジスタにセットされたデータが、クロックに合わせて1ビットごとに相手側のシフトレジスタに移動します。
ArduinoのマイコンのSPIモジュール
SPI通信で使用するクロックは、マイコンのシステムクロックを1/2から1/128に分周してSCKを用意しています。
SPIコントロール・レジスタでSPIの仕様を決める
通信のときに利用するクロックの位相、極性などのモード設定、マスタかスレーブかの役割、割り込み設定などを、このSPIコントロール・レジスタで設定します。
SPIステータス・レジスタ
データの転送完了、転送中に書き込みが行われたなどのステータスがセットされるレジスタ。
SPIデータ・レジスタ
送受信データの読み書きはこのレジスタを介して行います。
次回、このSPIモジュールをどのように制御してSPIの通信を行うのか確認します。





コメントする