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

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

バックナンバーはこちら。
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。 ← これ3回目/全4回
  • CMD2(ALL_SEND_CID)によるCIDの取得。
  • CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得。
  • CMD7(SELECT/DESELECT_CARD)によるTransfer State(tran)遷移。
フクさん
フクさん

全体のフロー図はこれ。

SDカードのSDモード通信の初期化シーケンスのフロー図
フクさん
フクさん

VOLTAGE_SWITCHの手順はこれ。
今回は(4)から(6)までだね。

信号電圧切替手順(Signal Voltage Switch Sequence)

(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

(4) ホストがSDCLKを停止

フクさん
フクさん

(3) カードがCMDとDAT[3:0]をLowにする」で、
SDカード側がLowに引っ張っているわけなんだけど、
ホスト側はそれを検知する必要がある。

太郎くん
太郎くん

とすると、
ホスト側は

  • SDCLK:出力
  • CMD:入力
  • DAT:入力

SDカード側は

  • SDCLK:入力
  • CMD:出力
  • DAT:出力

になってるってことか。

フクさん
フクさん

まぁ仕様書上に明記されてるわけでは無いが、きっとそうだろうね。
そうじゃないと辻褄合わないし。

(5) 5ms以上wait

太郎くん
太郎くん

これはSDCLKを5ms以上止めておくってことかな?

フクさん
フクさん

そう。
本当にそれだけ。

太郎くん
太郎くん

この5msは何してるんだろう?

フクさん
フクさん

仕様書上に記載があるわけではないが、
SDカード側の内部でVOLTAGE SWITCHの準備期間として設けられた時間だと思う。
よって、SDカードは5ms以内にVOLTAGE SWITCHが出来る設計/実装にしなければならないってことになるね。

太郎くん
太郎くん

まぁ時間規定は無いと困るし、利用する側としては5ms以上待つってことがわかればOKだね。

フクさん
フクさん

注意点としてはホスト側の5msがSDカード側の5msとぴったり一致することは無いと思った方が良いので、6msくらいを待つつもりの方が良いね。

(6) ホストが1.8VでSDCLK送出

太郎くん
太郎くん

ホストが1.8VでSDCLK送出」は・・・。
これはさっきの5ms以上待った後の動作だね。
ここから1.8Vに切り替わるって感じか。

フクさん
フクさん

そうだね。
カード側もSDCLKが無いと通信が出来ないので、
最初のアクションはどうしてもホスト側からってことにはなるね。

まとめ

フクさん
フクさん

まとめだよ。

  • カードがVOLTAGE SWITCHの開始受付としてCMDとDATラインをLowにする。
  • ホスト側はCMDとDATラインをLowをカード側がVOLTAGE SWITCHの開始を受領したと見なす。
  • ホスト側はSDCLKを5ms以上止める。(6ms待ちが安パイ)。
  • 上記の5ms後にホストから1.8VのSDCLK送出開始。

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

コメント

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