バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのSPIモード通信の初期化シーケンスについて。
SDカードは電源投入直後にすぐに読み書きができるわけではない。
特定の初期化シーケンスが必要となる。
この初期化シーケンスの概要をざっくりと説明する。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
SDカードの読み書きはすぐできるのか?

とりあえず、SDカードの読み書きの雰囲気はわかったから、あとはやってみればOKって感じかなー。

ところがそうでもないんだなー。

え?なんかあるの?

SDカードの初期化シーケンスってのを通す必要がある。

なにそれ?

SDカードは初期状態では、読み書きができない。
適切なコマンドを発行して、読み書き可能な状態へ遷移させてあげる必要がある。

加えて、SDカードもSDv1、SDv2とversoinがあって、
さらにSDv2もSDSC、SDHC、SDXCと容量が異なる。
ここら辺の判定も必要になるねー。

なんだかめんどくさそうだな。
SDカードのSPIモード通信の初期化シーケンス

とりあえず、SPIモードに於いての初期化シーケンスのフローを書いてみた。


大雑把に2つのシーケンスに分岐するのかな?
SDv2か否かを判定して、
SDv1関係の判定処理ルートと
SDv2関係の判定処理ルートって感じに見える。

そうだね。
おおよそその認識であってるよ。
初期化シーケンスで分かるSDカードの種類

ところで、SDv2側のルートのSDSCとSDv1ルートのSDはなんか違うの?

まぁものとしては一緒だね。
作られた時期が違うというか、
対応しているコマンドが違うって感じかなー。

つまり、
SDv1はSDカード確定で。
SDv2はSDカードかSDHC/SDXCのどれか。
SDv2の最後のCCSってやつの判定で初めてSDSCかが分かる。
ってことか。

ま、SDv1の時にはなかった仕様だからねー。
作らた時期の話、容量の話の2つが判断のポイントとなるね。

まぁ仕様自体がアップデートされてるが故に発生する話なんだろね。

そうそう。
まとめ

まとめだよ。
- SDカードはいきなり読み書きはできない。
- 初期化シーケンスを通してSDカード状態を読み書き可能状態へ遷移させる。
- 初期化シーケンスはSDv1、SDv2のルートに分かれる。
- SDv1とSDv2 SDSCはモノとしては一緒。
- SDSCかSDHC/SDXCはSDv2の最後のCCSの判定で分かる。
バックナンバーはこちら。
コメント