【FileSystem】車載外部ストレージ その18【SD初期化①】

【FileSystem】車載外部ストレージ その18【SD初期化①】 車載外部ストレージ

バックナンバーはこちら。
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モードに於いての初期化シーケンスのフローを書いてみた。

SDカード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の判定で分かる。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました