バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードの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モード通信の初期化シーケンス
前回まではSPIモードの初期化シーケンスだったけど、
今回からはSDモードの方になる。
実は大体一緒とかってあったりする?
まぁ似ていると言えば似ているかなぁ。
ただ、SPIモードとSDモードではコマンド名が一緒でもレスポンスが異なるモノも多いし、
SPIモードには無かった、Voltage Switchとか、Relative Addressって話が入ってきて、ちょっと複雑になるかもね。
まぁ一つずつ把握していくかー。
SDカードのSDモード通信の初期化シーケンスのフロー図
今回もフロー図とかあるの?
うん。
一応用意した。
最初の方は確かになんとなくは似てるけど、
SDモードの方がいろいろやってる感じだね。
あと、点線で区切ってる、
・Card identification mode
・data transfer mode
って何?
SDカード内のモードだね。
SDカードの初期化と言う意味ではCard identification modeを抜けて、data transfer modeに入ったところで終わりなんだけど、
今回に於いての初期化処理の定義は「読み書きできる状態まで」としてるので、
data transfer modeに入ったあとの処理も加えている。
SPIモードの方には無かった概念ってことだね。
そうそう。
まぁこれも一個ずつ説明してもらうわけなんだけど、
大雑把な流れとしてはどんな感じになるのかな?
そうだねー。
SPIモードの流れとも似ている部分があって重複する面もあるが、
とりあえず、以下の流れで説明しようと思ってる。
- CMD8(SEND_IF_COND)によるSDv2判定及びサポート電圧判定。
- ACMD41(SD_SEND_OP_COND)によるHigh Capacity設定とVoltage Switch可否判定。
- CMD11(VOLTAGE_SWITCH)によるVoltage Switch。
- CMD2(ALL_SEND_CID)によるCIDの取得。
- CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得。
- CMD7(SELECT/DESELECT_CARD)によるTransfer State(tran)遷移。
中々ボリュームがありそーだ。
まぁSPIモードでは出来なかったことも出来るようになるし、
どうしてもハンドシェイクは複雑になるね。
まとめ
まとめだよ。
- SDカードのSDモード通信の初期化シーケンスを大雑把に説明。
- 次回から以下の流れで説明予定。
- CMD8(SEND_IF_COND)によるSDv2判定及びサポート電圧判定。
- ACMD41(SD_SEND_OP_COND)によるHigh Capacity設定とVoltage Switch可否判定。
- CMD11(VOLTAGE_SWITCH)によるVoltage Switch。
- CMD2(ALL_SEND_CID)によるCIDの取得。
- CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得。
- CMD7(SELECT/DESELECT_CARD)によるTransfer State(tran)遷移。
バックナンバーはこちら。
コメント