準・究極の選択

MSP430というマイコンにてSPI通信で複数のデバイスとのやり取りを
テスト中です。

Chip selectという機能を用いて使用するslaveの選択をしている
つもりですが、うまく動作しません。

とりあえずマイコンと一つのslaveデバイスを接続した場合うまく動き、
またもう一つ別のslaveデバイスとマイコンだけを接続した場合も
うまく動きます。ところが、二つのslaveデバイス両方をマイコンに
接続している時は、slaveからマイコンへの信号をマイコンが受ける
時点で止まってしまいます。

MISO, MOSI, クロック用ラインはマイコンと二つのslaveデバイスで
共有接続しています。
chip selectを送るラインは、マイコンの二つのポートからそれぞれの
slaveデバイスに個別につなげるようにしています。

slaveデバイス(SCP-1000)のマニュアルにはchip selectをhighにすると
MISOラインはハイインピーダンスになると記載があります。MISOラインは
別のslaveデバイスとも接続されているのですが、片方のslaveで
ハイインピーダンスになっても、それと接続されているもう片方の
slaveのMISOはきちんとデータのやり取りをしてくれるのでしょうか?

その他、slave複数接続時の確認事項などご教授いただければと思います。

A 回答 (1件)

オシロスコープをお持ちでしょうか、この手のチェックをするのに、オシロで波形を見れば一発で分かりそうですが。


SPIは元々複数のI/Oを制御するようになっていませんでした。それにCSを追加して、マルチ制御できるようになってきていますが、それの切替時間等に標準の規格は無く、各チップ毎に対応する必要が有ります。それらの時間関係もオシロがあればマニュアルと見比べて規格内に入っているか確認できます。
対策としては、MISOラインにプルアップ抵抗等を入れてOFF時信号を安定させる、外部に74HC157のようなマルチプレクサ回路を入れる等が考えられます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!