SPIはモトローラ(現フリースケール・セミコンダクタ)が提唱した通信規格です。物理的な動作はクロック同期式シリアル通信と同じです。4つの信号、クロック(SCLK)、マスター出力/スレーブ入力(MOSI)、マスター入力/スレーブ出力(MISO)、スレーブセレクト(SS)で通信を行います。SCKは同期クロックでマスターデバイスから出力されます。MOSIとMISOはSCKに同期したデータ信号です。SS信号はスレーブ認識信号です。マスターの場合はLowを出力し、スレーブは入力で受けて、Lowの場合に自分が選択されたと認識します。いわゆるチップセレクト(CS)のような信号です。
SPIの通信プロトコルは基本的にモトローラのSPIに準拠していますが、各マイコンで使い方が若干異なります。ここでも、STM8Lを使って、SPI機能を説明します(図6/図7)。
クロックの位相とデータをラッチするタイミングは、クロック極性(CPOL)とクロック位相(CPHA)の2つのパラメータで指定できます(図6)。内部にデータシフトレジスタを持っていて、このデータを1ビットずつシフトして出力または入力します。送信データはTXバッファへ格納します。受信データはRXバッファに格納されます。CPUはRXバッファとTXバッファを介してデータの送受信を行います。
転送速度はSCKの周波数によって決まります。ボーレート発生器を持っているため、ユーザーが任意の値に設定することができます。最大周波数はSTM8Lの場合8MHzですが、各製品で仕様が異なりますので、各製品のデータシートを参照してください。
基本的にはクロック同期式シリアル通信と同じため、I2Cのような転送シーケンスは必要ありません。1クロックにつき1ビットのデータを送りながら1バイトを送信します。
ユーザーは同期式シリアルと同じ動作で、各EEPROMで規定されたアドレス、データ、オペコード(書き込みイネーブル/ディセーブル、レジスタの読み出し/書き込み、データの読み出し/書き込みなど)を通信します。
実際のEEPROMとマイコンの接続方法を知りたい場合は、次の情報を参考にしてください。
Copyright © ITmedia, Inc. All Rights Reserved.