MMC応答なしの時の対処
今どき市場には流れてる気配がありませんがMMC(Multimedia Card)を扱う上での注意点です。
MMCをワンチップマイコンで扱う場合の注意です。
MMCをSPI Modeでアクセスするときは出来るだけ連続で。ドライバICを使えるなら使った方がよい。
今日試験した結果ではMMCはコマンド送信中にクロックが停止状態が3ミリ秒以上継続するとコマンドレスポンスはするもののその後inactive modeに入ってしまう(CMD17で発生)
恐らくMMC内でタイムアウトが発生しているようだ。
SundiskのMMCはスリープまで5msのようだ。トリガーの詳細は不明。
これを2ミリ秒にしたら正常動作に なった。
ワンチップマイコンでMMCドライバICを使わない場合は割り込み処理等でMMCアクセス中であってもCPUリソースを割り込みに奪われてしまう。
今回はMMC書き込みとAD変換を並列処理にした結果、動作異常が発生した。
今回はCSネゲート直前からR1レスポンスまでを割り込み禁止にしたことで解決した。合わせてADの処理を効率化して1ミリ秒に縮めた。
MMCの電源制御ができる場合は異常時にMMCをリセットさせることで対応してもよい。
MMCをワンチップマイコンで扱う場合の注意です。
MMCをSPI Modeでアクセスするときは出来るだけ連続で。ドライバICを使えるなら使った方がよい。
今日試験した結果ではMMCはコマンド送信中にクロックが停止状態が3ミリ秒以上継続するとコマンドレスポンスはするもののその後inactive modeに入ってしまう(CMD17で発生)
恐らくMMC内でタイムアウトが発生しているようだ。
SundiskのMMCはスリープまで5msのようだ。トリガーの詳細は不明。
これを2ミリ秒にしたら正常動作に なった。
ワンチップマイコンでMMCドライバICを使わない場合は割り込み処理等でMMCアクセス中であってもCPUリソースを割り込みに奪われてしまう。
今回はMMC書き込みとAD変換を並列処理にした結果、動作異常が発生した。
今回はCSネゲート直前からR1レスポンスまでを割り込み禁止にしたことで解決した。合わせてADの処理を効率化して1ミリ秒に縮めた。
MMCの電源制御ができる場合は異常時にMMCをリセットさせることで対応してもよい。