前々回のZ80に萌えたい SD-CARDソフトその1に続いて、SDカードを初期化していきます。

前々回でCSをHレベルのまま、80個のクロックパルスを出力しました。
この後、コマンドを発行して、初期化していきます。

最初のコマンドは、CMD0(ソフトウェアリセット)です。
命令コードは 0x40,0x00,0x00,0x00,0x00,0x95 の6バイト構成です。
最後の6バイト目のCRCは必須ですが、コマンドが固定ですので、0x95で決め打ちできます。
コマンド送信の際は、CSはLレベル(選択した状態)にします。)
コマンドを送信した後は、0xffを送信して、その帰り値(レスポンス)を確認していきます。
レスポンスとして、アイドル状態に入った状態になるので、ビット0が”1”となった 0x01が帰ってきます。

[asm] cmd0_out:
ld hl,cmd0
call cmd_out
call r1_resp
cp 0x01
jp nz,init_err
[/asm]

下の図はcmd0の信号のやり取りです。
2段に分かれて上段がSDカードからの受信、下段がSDカードへの送信を表しています。
上段は、HEX表示、CS、クロック(CLK)、SDカードから受信(DO)
下段は、HEX表示、SDカードへの送信(DI)、CS、クロック(CLK)、SDカードから受信(DO)を示しています。

レスポンスは、すぐに0x01は帰ってこなく、0xffを1回受信した後に帰ってきています。
次回も引き続き初期化ルーチンです^^

おすすめの記事