« サーミスタで温度を測る - 温度と抵抗値の相互変換 - B定数について | トップページ | (白金)測温抵抗体の氷点での抵抗値を測ってみた »

2015年5月29日 (金)

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

以前SDカードと他のSPIデバイスをいっしょに使うとSDカードの読み書きでエラーが起きるという話を何度も書きました。

他のデバイスといっしょに使うからエラーが起きる、と思い込んでいたのですがどうやら原因は別のところにあったようです。

======

まず最初に問題になったのはこの回路です。

Conflict01

SDカードだけなら読み書きはできるし、MCP3208とDS3234Sの二つだけならデータもちゃんととってこれるのに両方いっしょに使うとSDカードでエラーが起きてしまうという現象でした。

最近もっと簡単な回路でもエラーが起きることに気が付きました。

--------

その1
Conflicta00

PICとSDカードの距離が大きくなるとエラーがおきます。

------

その2

Conflicta1

PICとSDカードが近くにあり他のデバイスを使わずSDカードだけ使うときでも他のデバイスと接続していたケーブルを挿したままにしておくとエラーが起きます。

“その1”にしても“その2“にしてもそういう使い方をしなくてもいいだろうと思われる方も多いでしょう。でもこういう状況は「PIC+SPI+I2C 自記温湿度計+気圧計+8ch電圧計+周波数カウンタ(技術要素一覧)」にある写真をご覧になればなぜそうなるかイメージが湧くと思います。

-------

これらの状況から他のデバイスといっしょに使っているからエラーが起きていたのではなかったことがわかります。上の例から考えるとケーブルのもつ浮遊容量あたりが問題になっているのでしょう。要するにSDカードのSDO出力のドライブ能力が不足しているようです(SPIはプルアップ抵抗が不要なように思えるのに実際はプルアップを入れないと動かないという話と根はいっしょのような気もします)

となると「自記温度計、自記気圧計 - 複数のSPIデバイスがいっしょに使えなかった話」が本質的な解決になっていないことがわかります(ずっとそのまま使っていました。問題が起きることはほとんどないので気にはしていなかったのですが、たまに原因不明のエラーが起きることがありました)

ではこの状況をどうやって打開するか、というのが次の記事になる予定です。

この記事の解決編を書いていないことを思い出しました。
けっきょくSDカードは他のSPIデバイスとは別系統にしてしまい。アナログスイッチで切り替えるという対策をとりました。


------

関連記事リスト

  趣味の電子工作
    PIC
      「PICでSPI SDカードを読み書きする
      「SPI接続でトラブル! 複数のデバイスが使えない
      「SPI接続でSDカードとMCP3208がいっしょに使えない話
      「自記温度計、自記気圧計 - 複数のSPIデバイスがいっしょに使えなかった話
  趣味の気象観測
  趣味の実験

« サーミスタで温度を測る - 温度と抵抗値の相互変換 - B定数について | トップページ | (白金)測温抵抗体の氷点での抵抗値を測ってみた »

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

コメント

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

トラックバック


この記事へのトラックバック一覧です: SDカードでエラーが起きる理由 - PICでSPI:

« サーミスタで温度を測る - 温度と抵抗値の相互変換 - B定数について | トップページ | (白金)測温抵抗体の氷点での抵抗値を測ってみた »

フォト

サイト内検索

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

新着記事

リンク元別アクセス数

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

人気記事ランキング

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