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

【FileSystem】車載外部ストレージ その33【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。 ← これ4回目/全4回
  • CMD2(ALL_SEND_CID)によるCIDの取得。
  • CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得。
  • CMD7(SELECT/DESELECT_CARD)によるTransfer State(tran)遷移。
フクさん
フクさん

全体のフロー図はこれ。

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

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

信号電圧切替手順(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

(7) SDCLK送出から1ms以内にカードが1.8VでCMDラインをHigh

太郎くん
太郎くん

前回、ホスト側からSDCLKが送出し始めたところまで来てたから、
その送出をSDカード側が検知してから1ms以内にCMDラインをHigh・・・。
って、そのまんまだね。

フクさん
フクさん

そうだね。
ここでは1ms以内ってのが重要だね。

太郎くん
太郎くん

手順の後半は割と時間にシビアだなー。

(8) ホスト側でCMDラインのプルアップチェック

フクさん
フクさん

これも書いてあるまんまなんだが、
一個前の「(7) SDCLK送出から1ms以内にカードが1.8VでCMDラインをHigh」と組み合わせると、
ホスト側は1.8V SDCLKを送出してから1ms以上まってから、CMDラインのHighをチェックできるってことになる。

太郎くん
太郎くん

それをもって、SDカード側1.8Vへ移行できたのが分かるってわけか。

フクさん
フクさん

そうだね。
まぁもう1手順あるんで、確定ってわけではないが、まぁSDカード側が1.8V駆動に遷移しているのは間違いないだろう。

カード側でDAT[3:0]のいずれかのラインをHigh

太郎くん
太郎くん

やっと、最後の手順か。

太郎くん
太郎くん

カード側で1.8VでDATのラインを駆動できれば、完全に1.8V駆動可能ってことだね。

フクさん
フクさん

そうそう。
これをもって、
SDCLK、CMD、DATのすべてのラインで1.8Vで駆動した事実が出来たんで、
物理層としては完全に1.8Vで問題無しと言える。

太郎くん
太郎くん

なんか最後の方は信号ラインの動作確認みたいな感じだったね。

フクさん
フクさん

仕様書には書いてないけど、たぶんそういう位置づけなんじゃないかな。
ここへ変にこけたら3.3V系に戻す必要もあるだろうし。

太郎くん
太郎くん

予想以上にしっかりしたハンドシェイクだったな。

フクさん
フクさん

とりあえず、Voltage Switchの話は以上だ。

まとめ

フクさん
フクさん

まとめだよ。

  • ホストからのSDCLK送出から1ms以内にカードはCMDを1.8VでHighにする。
  • ホストはそれを検知。
  • さらにカードはDATのラインを1.8VでHighする。
  • これもホストが検知。
  • 上記をもって、SDCLK、CMD、DATのラインが1.8V駆動で通信可能な状態が相互で確認できたことになる。

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

コメント

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