SSブログ
English Version

3チップ構成68Kマイコンの構想(その5)SDカード初期化 [68K]

 前回の記事で最近買った16GBのSDカードで初期化処理が失敗することを書きましたが、どの部分で失敗するか確かめてみました。

 SDカードのライブラリを利用する人にとっては興味のないところではあるかと思いますが、自分のためのメモとしての意味も込めて記録しておきます。

 SDカードのSPIインターフェースでの制御に関してはネット上にもあまり情報がなく(一時期、簡易的な仕様が公開されたようですが現在はダウンロードできないようです)、最も判り易いものの一つとしてChaNさんのHow to Use MMC/SDCのサイトがあります。
★2018/09/30 追記 {
 SDカードの簡略仕様の公開は2018年8月29日にアップデートされSimplified Specificationsで公開されています。
}
 ここで書かれているSPIモードでの初期化フローに照らし合わせて確認してみると新しいSDカードではフローの中央に記載されている ACMD41 のレスポンス が 0x00 になるまで繰り返す部分でループしていました。20数回リトライするとSDカードからレスポンスが来なくなるようです。

 送信データ最初の0x77の値の部分と0x69の部分を合わせてACMD41です。
 ネット上の情報では0x77部分と0x69の間でCS/を連続してアサート(Low)のままにすべきと書いてあるものもあり(しかし一旦デアサート(High)すべきと書いてあるものもある)、両方試してみましたが状況は変わりませんでした。

 私の環境で動作するSDカードの場合は何回かリトライしているとACMD41の応答が0x01(アイドル状態)から0x00に変更になります。

 その他の対策としてブレッドボートへ供給している5V電源と3.3Vレギュレータの強化を行うことで安定性が増しました。
 また、原因調査する上でCP/Mのディスクパラメータ側の被疑の可能性を下げるため、CP/M-80の時と同様のパラメータに戻しました。

ACMD41コマンドリトライ中のロジアナ波形


 応答が0x00になるまでリトライしているうちにSDカードから応答が来なくなる・・

リトライ中にSDカードから応答無し


 今回の評価でSDカードを何枚か購入しましたが、結果として全てのSDカードでうまく動かすかすことはできませんでした。
 今回はうまく動作するSDカードを使用することにします。古めのSDカードの方が問題が発生しない傾向があるように感じます。
 下の写真で左側のマイクロSDがNGだったものです。右側のSanDiskの8GBのSDHCカードは動作が良好だったので数枚買い置きしておきました。
 因みに、古いSDカードは容量が小さくなる程、高額になりますw

評価したSDカード例(右側は動作良好)


★2018/10/27 追記
 SDカードについてですが、ブレッドボードとSDカード基板との接触不良によって不安定になっていたようですorz
 SDボードに触ると状態が変化することがあったので何となく気が付いていたのですが、今回プリント基板化したら複数のSDカードで安定してアクセスできるようになりました^^


[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(1)  コメント(0) 
共通テーマ:趣味・カルチャー

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。