« ラブジョイ彗星2015年2月20日、21日の予測位置とM76との位置関係 | トップページ | 2015年2月10日、今日のラブジョイ彗星の位置 »

2015年2月10日 (火)

SPI接続でトラブル! 複数のデバイスが使えない

いつもはこんなの作りました、という記事を書いているわけですが、今回は、作れません、という記事です。できました、より、できませんでした、の方が参考になるのかも (^^;;

この複数のSPIデバイスをいっしょに使う話についてはきむしげさん(きむ茶工房ガレージハウス)の

  「
SPIマスターにSPIデバイスを複数個接続して見ます

にソースを含めた詳細な記事があります。きっと私の記事よりずっと参考になると思います。

なお動くのは動くけれども(SDカードの読み書きの)動作が不安定という場合は

  「
PICでSPI - SDカードの書き込みエラーの話

が参考になることがあるかもしれません。また私の使っているSDカードアダプタはそもそも単独で使ってもエラーが出ることがわかりました (^^;;

  SDカードでエラーが起きる理由 - PICでSPI

---------

この記事を書いてから一年以上経ったのですが、けっきょく問題なのはSDカードだけでした。SDカードはかなり微妙なところがある気がします。となると二つSSPがある場合(例えばPIC18F26K22)ではSDカードとそれ以外と分ければいいのかも。ただそうするとI2Cが使えなくなりますが、一つのSSPをI2CとSPIで共用する方法は次の記事にあります。。

  ほよほよのブログ - 超高精度リアルタイムクロックDS3234Sを動かす

---------

====

まずSPI接続でSDカードにデータの記録ができるようにしました。
  「PICでSPI SDカードを読み書きする

次にRTCが使えるようになりました。
  「PICでSPI - 超高精度SPIバスRTC(リアルタイムクロック)DS3234Sの使い方

余談ですがこれほんとうに高精度でおすすめです。

そしてこの二つがいっしょに使えるようになりました。
  「PIC/I2C大気圧センサーLPS331APの測定値をSDカード(SPI)に記録する - はじめに

これで自記温湿度計、自記気圧計ができあがりました。

一方8チャンネルのADコンバータの動作確認も終わりました。
  「PIC18F26K22でSPI - 8ch/ADコンバータ MCP3208の使い方(ソース付き)

いよいよこれらを合体させ抵抗やコンデンサー、コイルやVBEの温度特性を調べたりしようということになりました。

------

ところがこれら三つをいっしょに使うとSDカードの初期化でエラーが出るようになりました。

1. SDカードでエラーは出ますがその後時刻とADコンバータで測定した電圧データは表示できています。

2. MCP3208をソケットからはずすとSDカードに時刻付きのデータを書き込めてます。

これまた余談ですが、私はIC類は基本基板に直接ハンダ付けなんですが、いろいろな経緯があってこれだけはソケットを使っていました。不幸中の幸いでしょうか。

-------

どうやらハード的なトラブルのようです。

これからどのライン(SCLK、SDO、SDI)が問題か切り分けて行く予定ですが最悪使うデバイスに応じてラインの切り替えでしょうか。

もうトライステートバッファを載せる場所はないのでI2Cでアドレスがかち合ったときに備えて実装してあるアナログスイッチを流用することになるかもしれません。

解決したらまた記事で報告します。
  <=== 解決しました。「
SPI接続でSDカードとMCP3208がいっしょに使えない話

けっきょくこの話は

  「自記温度計、自記気圧計 - 複数のSPIデバイスがいっしょに使えなかった話

のいちばん最後にある方法で対応しました。その後トラブルは発生していません。

---

それぞれ別の基板に組み立ててあるのでその間はコネクタでつないでいるのですが、PIC基板=> SDカード基板が20cmくらい、SDカード基板=>RTC+ADC基板も20cmくらいですからそんなに距離があるとも思えません。

それぞれこんな感じです。
  「PIC/I2C大気圧センサーLPS331APの測定値をSDカード(SPI)に記録する - 実装編

RTCの基板の空いているソケットにMCP3208が刺してあります。

全体でこうなります
  「PIC/I2C大気圧センサーLPS331APの測定値をSDカード(SPI)に記録する - 実装編

これにI2Cデバイスを接続して実験してます。I2Cデバイスはディスプレイを入れてもう6個(ACM1602N1、MCP3425、AM2321、LPS331A、MPL115A2、LPS25H)つながって正常に動作しておりさらに増設予定です。
  「I2C/SPI大気圧センサーLPS25Hの使い方 - 1 - 実装

こちらには稼動状態の全体像(?)の写真があります。

------

  趣味の電子工作
    PIC
  趣味の気象観測
  趣味の実験

« ラブジョイ彗星2015年2月20日、21日の予測位置とM76との位置関係 | トップページ | 2015年2月10日、今日のラブジョイ彗星の位置 »

趣味の電子工作」カテゴリの記事

コメント

PCのマザーみたいですね^^。
整合性を取りつつすべてを接続する、本当にすごいです。
これで1年とか観測を続けてグラフ化したら面白そうですね^^。

正直困ってます。
こういうときだけはオシロスコープがあればなあと切実に思います (^^;;
ひとまずバイナリカウンターでバスの状況を観察してみる予定です。
一年観測したら台風が来たり木枯らしが吹いたり、歴史を感じるんじゃないでしょうか (^^)

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: SPI接続でトラブル! 複数のデバイスが使えない:

« ラブジョイ彗星2015年2月20日、21日の予測位置とM76との位置関係 | トップページ | 2015年2月10日、今日のラブジョイ彗星の位置 »

フォト

サイト内検索

  • 記事を探されるんでしたらこれがいちばん早くて確実です。私も使ってます (^^;; 検索窓が表示されるのにちょっと時間がかかるのはどうにかしてほしいです。

新着記事

リンク元別アクセス数

  • (アクセス元≒リンク元、原則PCのみ・ドメイン別、サイト内等除く)

人気記事ランキング

  • (原則PCのみ、直近2週間)
無料ブログはココログ