気圧センサSCP1000を接続してみる(1)
 最近は、SPIのディジタル通信機能をもったセンサが多くなっています。Arduinoの標準のライブラリにはSPIの処理を行う機能は用意されていません。一方、Ardunoのマイコン・ボードに使用されているマイコンのATmega168/328チップ自体は、SPIの通信の機能を内蔵しています。その機能を利用してSPI通信処理を行ってみます。

SPI通信
 ArduinoでのSPI通信は、Arduinoのマイコン・チップに内蔵されているSPIの通信機能を用いて行います。そのため次の図に示すように、SPIの通信に必要な信号線が特定のピンに割り当てられています。

SPI010010.jpg

    ディジタル入出力 13 SCK(SPIのクロック信号線)
    ディジタル入出力 12 MISO(スレーブからマスタへの信号線) 
    ディジタル入出力 11 MOSI(マスタからスレーブへの信号線)
    ディジタル入出力 10 SS(スレーブの選択信号線)
と決められています。


マイコン・チップのピン配置
   Arduino Duemilanove(328P)のマイコン・ボードには、次に示すATmega328のマイコン・チップが搭載されています。

SPI010020.jpg  このチップの16ピンから19ピンがSPI用の機能が割り当てられています。ディジタル入出力ポートとして利用するときはPBポートとして利用します。同様にアナログ入力はPCのディジタル・ポートと入出力ピンを共用しているのがわかります。

SPIの通信
   SPIはSerial Peripheral Interfaceの略で、クロックと送受信の計3本の信号線で通信を行い、2線式のシリアル通信(I2C)より高速な通信が可能となっています。
 通信は、マスタおよびスレーブのそれぞれの8ビットのシフトレジスタにセットされたデータが、クロックに合わせて1ビットごとに相手側のシフトレジスタに移動します。

SPI010030.jpg 8クロックで1バイト分のデータが移動し、マスタとスレーブのシフトレジスタのデータが入れ替わり、その結果、マスタとスレーブ間の通信が行われます。

ArduinoのマイコンのSPIモジュール
   SPI通信で使用するクロックは、マイコンのシステムクロックを1/2から1/128に分周してSCKを用意しています。

SPIコントロール・レジスタでSPIの仕様を決める

   通信のときに利用するクロックの位相、極性などのモード設定、マスタかスレーブかの役割、割り込み設定などを、このSPIコントロール・レジスタで設定します。

SPI010040.jpgSPIステータス・レジスタ
    データの転送完了、転送中に書き込みが行われたなどのステータスがセットされるレジスタ。
SPIデータ・レジスタ
    送受信データの読み書きはこのレジスタを介して行います。



 次回、このSPIモジュールをどのように制御してSPIの通信を行うのか確認します。

<神崎康宏>


トラックバック(0)

このブログ記事を参照しているブログ一覧: ArduinoにSPI通信を行う機器を接続する(1)

このブログ記事に対するトラックバックURL: http://www.eleki-jack.com/mt/mt-tb.cgi/4384

コメントする





マイコンと電子工作 No.6


マイコンと電子工作 No.4


マイコンと電子工作No.1
サポート・ページはこちら

カテゴリ

このブログ記事について

このページは、kanzakiが2010年7月 6日 11:20に書いたブログ記事です。

ひとつ前のブログ記事は「「Gainer 互換Pepperでフィジカル・コンピューティング」フォローアップ記事(14)」です。

次のブログ記事は「「Gainer互換Pepperでフィジカル・コンピューティング」フォローアップ記事(15)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Creative Commons License
このブログのライセンスは クリエイティブ・コモンズライセンス.