バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのSDモード通信の初期化シーケンスのCMD11(VOLTAGE_SWITCH)によるVoltage Switchについて。
登場人物
博識フクロウのフクさん
イラスト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モード通信の初期化シーケンス詳細
今回は、「CMD11(VOLTAGE_SWITCH)によるVoltage Switch」の話になる。
- CMD8(SEND_IF_COND)によるSDv2判定及びサポート電圧判定。
- ACMD41(SD_SEND_OP_COND)によるHigh Capacity設定とVoltage Switch可否判定。
- CMD11(VOLTAGE_SWITCH)によるVoltage Switch。 ← これの1回目/全4回
- CMD2(ALL_SEND_CID)によるCIDの取得。
- CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得。
- CMD7(SELECT/DESELECT_CARD)によるTransfer State(tran)遷移。
全体のフロー図はこれ。
CMD11(VOLTAGE_SWITCH)によるVoltage Switch
これはもう名前のまんまで駆動電圧を切り替えるって話かな?
そうだね。
SDカードは通常3.3V駆動なんだけど、
それを1.8V駆動に切り替えられる。
まぁ当然、切替をサポートしてるSDカードである必要はある。
それを前回のACMD41で確かめられるってことだったんだよね。
うん。
で、切替サポートが無ければCMD11を投げずに次のステップに進むんだけど、
切替サポート有り、且つ切り替えたい場合はCMD11を発行するわけだ。
ということは、今回はこれで終了!
って感じか!
それがそうでもないんだなー。
(カオスになる予感しかしない・・・。)
電圧切替の手順
電圧切替には結構複雑な手順があるんだよ。
とりあえず、手順の全体像を示した図を張っておこう。
うーん、分かり易いやら、分かりにくいやら
というか全くわからん!
だよねー。
大雑把に9つの手順がある。
(1) ホストからのCMD11発行
(2) カードからのR1レスポンス
(3) カードがCMDとDAT[3:0]をLowにする
(4) ホストがSDCLKを停止
(5) 5ms以上wait
(6) ホストが1.8VでSDCLK送出
(7) SDCLK送出から1ms以内にカードが1.8VでCMDラインをHigh
(8) ホスト側でCMDラインのプルアップチェック
(9) カード側でDAT[3:0]のいずれかのラインをHigh
(アカン。わからん)
これも一つずつ説明していくよー。
まとめ
まとめだよ。
- CMD11(VOLTAGE_SWITCH)によるVoltage Switchの説明。
- ACMD41で1.8V切替サポートが確認できたSDカードは1.8V駆動に切替できる。
- Voltage Switchの手順はまぁまぁ複雑。
- タイミングチャートで確認。
- 大雑把に手順確認。
バックナンバーはこちら。
コメント