マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。49回目は、初心者の方からよく質問される「SPIに複数のスレーブを接続する方法」についてです。
素朴な疑問から技術トラブルなどマイコンユーザーのあらゆる悩みに対し、マイコンメーカーのエンジニアが回答していく連載「Q&Aで学ぶマイコン講座」。
今回は、中級者から多く寄せられる質問です。
SPI(Serial Peripheral Interface)は、通常1つのマスターに対し1つのスレーブと通信しますが、複数のスレーブが存在する場合、1つのマスターで複数のスレーブと通信することはできますか? 複数のSPIを数珠状につなぐことはできますか?
SPIにはスレーブを選択する信号「Slave Select」(SS)があります。SSがアクティブ(通常ローレベル)になると、そのSPIがスレーブとして選択されていることになり、マスターと通信できます。この機能を利用して、1つのマスターに複数のスレーブを接続して通信することができます。図1に、「STM32F3シリーズ」(STマイクロエレクトロニクス製)の例を示します。
データライン(MISOとMOSI)とクロックライン(SCK)は、共通信号としてスレーブに接続しますが、SS信号(STM32F3シリーズではNSS)は汎用IOから接続し、個別に制御できるようにします。この方法の場合、汎用IOの制御にソフトウェアが介在しますが、通信したいスレーブを自由に選択することができます。
図2は、「STM32F3シリーズ」でSPIを数珠つなぎにした例です。データの受信と送信は内部のシフトレジスタで行います。そこで、マスターのMOSIを最初のスレーブのMOSIにつなぎ、そのスレーブのMISOを次のスレーブのMOSIにつなぐようにします。図2ではスレーブが2つですが、複数個のスレーブをこのルールに従ってつなげ、最後のスレーブのMISOをマスターのMISOにつなぐと、SPIのシフトレジスタをすべて数珠状につなげることができます。
Copyright © ITmedia, Inc. All Rights Reserved.