SDカードでエラーが起きる理由 - PICでSPI
以前SDカードと他のSPIデバイスをいっしょに使うとSDカードの読み書きでエラーが起きるという話を何度も書きました。
他のデバイスといっしょに使うからエラーが起きる、と思い込んでいたのですがどうやら原因は別のところにあったようです。
======
まず最初に問題になったのはこの回路です。
SDカードだけなら読み書きはできるし、MCP3208とDS3234Sの二つだけならデータもちゃんととってこれるのに両方いっしょに使うとSDカードでエラーが起きてしまうという現象でした。
最近もっと簡単な回路でもエラーが起きることに気が付きました。
--------
その1
PICとSDカードの距離が大きくなるとエラーがおきます。
------
その2
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定数について | トップページ | (白金)測温抵抗体の氷点での抵抗値を測ってみた »
「趣味の電子工作」カテゴリの記事
- PICで作る100MHz周波数カウンタ検証用XOR(エクスクルーシブオア)逓倍器(2016.03.08)
- 150MHz(~200MHz?)周波数カウンター用プリスケーラー(1/4分周器)(2016.03.06)
- 測温抵抗体(Pt100、白金薄膜温度センサー)の抵抗値を温度に変換する(平方根を使わない)計算式(2016.03.01)
- GPS/JJY(標準電波)を基準周波数源とするためのPLLの詳細(2016.02.27)
- GPS受信モジュール1PPS対決 - GE-612T vs GM-5157A(2016.02.21)
この記事へのコメントは終了しました。
« サーミスタで温度を測る - 温度と抵抗値の相互変換 - B定数について | トップページ | (白金)測温抵抗体の氷点での抵抗値を測ってみた »
コメント