メディア
連載
» 2019年09月30日 07時00分 公開

Q&Aで学ぶマイコン講座(49):裏技!? SPIに複数のスレーブを接続する方法 (1/3)

マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。49回目は、初心者の方からよく質問される「SPIに複数のスレーブを接続する方法」についてです。

[STマイクロエレクトロニクス,EDN Japan]

過去の質問一覧はこちら

 素朴な疑問から技術トラブルなどマイコンユーザーのあらゆる悩みに対し、マイコンメーカーのエンジニアが回答していく連載「Q&Aで学ぶマイコン講座」。

 今回は、中級者から多く寄せられる質問です。

 SPI(Serial Peripheral Interface)は、通常1つのマスターに対し1つのスレーブと通信しますが、複数のスレーブが存在する場合、1つのマスターで複数のスレーブと通信することはできますか? 複数のSPIを数珠状につなぐことはできますか?

 SPIにはスレーブを選択する信号「Slave Select」(SS)があります。SSがアクティブ(通常ローレベル)になると、そのSPIがスレーブとして選択されていることになり、マスターと通信できます。この機能を利用して、1つのマスターに複数のスレーブを接続して通信することができます。図1に、「STM32F3シリーズ」(STマイクロエレクトロニクス製)の例を示します。

図1:マルチ・スレーブ・システム(STM32F3シリーズの場合) (クリックで拡大)

 データライン(MISOとMOSI)とクロックライン(SCK)は、共通信号としてスレーブに接続しますが、SS信号(STM32F3シリーズではNSS)は汎用IOから接続し、個別に制御できるようにします。この方法の場合、汎用IOの制御にソフトウェアが介在しますが、通信したいスレーブを自由に選択することができます。

 図2は、「STM32F3シリーズ」でSPIを数珠つなぎにした例です。データの受信と送信は内部のシフトレジスタで行います。そこで、マスターのMOSIを最初のスレーブのMOSIにつなぎ、そのスレーブのMISOを次のスレーブのMOSIにつなぐようにします。図2ではスレーブが2つですが、複数個のスレーブをこのルールに従ってつなげ、最後のスレーブのMISOをマスターのMISOにつなぐと、SPIのシフトレジスタをすべて数珠状につなげることができます。

図2:マルチ・スレーブ・チェーンシステム(STM32F3シリーズの場合) (クリックで拡大)
       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.