March 03, 2007MMC/SDのSPIモードでのbusy信号以前『SDカードとの闘い』という記事でオシロでSDの様子を見てみたい、ということを書きましたが、実際に計測してみました。前の記事では、データ落ちが発生するのはSDの書込み性能の違いからくるものであり、公称性能が違うSDカードを、書込み時のビジー(busy)が出力される長さをオシロで計測することで評価してみようという趣旨だったと思います。ところが、ELMの『MMCカードの使い方』をよく読んでみると、このようなことが書いてありました。
今まで実はbusyの間はポーリング、つまりbusyの出力が停止するまでずっとCPUをSDの監視に割り当てていたのですが、ここに書いてあるようにbusyの評価を先送りにできるのなら、その開いた時間でデータを取りこぼしなく確実に取得できることになります。そこで、そのビジーの遅延評価をオシロを利用して詳しく分析してみることにしました。 長いので詳細は続きにてどうぞ。 busyの遅延評価を行った場合の全体図を示します。 busyが出力されてCSをデアサートする部分。SDのDOUTを確実に解放するためにはCSデアサート後、CLKを適度に送る必要があります(ここでは8clk)。 busyの遅延評価(CSを再アサートし、DOUTの出力を見る)を行っている部分。busyの場合はCSアサート後、1clk後にDOUTがbusyを出力します。 ついでにbusy遅延評価を行いながら、1セクタ(512byte)の連続書込みをした場合の信号の変化を捉えてみました。カードはTECIC MicroSD 512MBですが、これによるとbusy出力は約0.99msecであり書込み1サイクルあたり1.68msecでした。よって、これから推算される書込み能力は(1000 / 1.68 * 512) = 305 KByte/secで、僕の用途では十分に高速です。なお、SPIのクロックは24MHzです。 文献にもあたったところ、SandiskのSDのマニュアルを読むと、このbusyの遅延評価について100ページの5.4.3 Data Writeに明確に書いてありました。このマニュアルですが、どうやら本家からはデットリンクになっているようなのでコピーを落とせるようにしておきます、問題がある場合は直ちに削除します。 コメント
コメントする
|
スポンサード リンク
|