もともと SPIは複数のデバイスが制御可能なので、信号線を共用できれば I/Oの節約にもなる。ところが少々やっかいなことに、SDカードの出力にはくせがあり、気を付けないと他のデバイスの出力と衝突する。このあたりの情報はChaNさんのMMCの使いかたが詳しい。
制御の工夫次第で衝突は回避できるようだが、Roland Riegelさんのライブラリではどうだろうか。実際の出力を見てみよう。
まず SDカード直結の場合。DOは出力がハイインピーダンスになったことが判るように、抵抗分圧で終端してある。SSが SDカードのセレクト信号でローアクティブ。連続したアクセス期間の前後で DOが開放されていない。拡大部分のように DOが開放される場合もあるが、このままでは他のデバイスとは共存できない。
次は SSを使用して DOを切り離す仕組みを追加した場合。連続したアクセス期間の前後で DOが開放されている。もちろん拡大部分のようにアクセス期間中の非アクセス時も DOはが開放されている。これならば他のデバイスとの共存に問題はない。
もちろんこの状態で SDカードへのアクセスは問題ない。
ライブラリを修正しても対応は可能と思うが、互換性等を考えればハードウェアで対処するのが良いだろう。
次は SSを使用して DOを切り離す仕組みを追加した場合。連続したアクセス期間の前後で DOが開放されている。もちろん拡大部分のようにアクセス期間中の非アクセス時も DOはが開放されている。これならば他のデバイスとの共存に問題はない。
もちろんこの状態で SDカードへのアクセスは問題ない。
ライブラリを修正しても対応は可能と思うが、互換性等を考えればハードウェアで対処するのが良いだろう。
0 件のコメント:
コメントを投稿