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

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

バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/

はじめに

SDカードのSDモード通信の初期化シーケンスの「CMD7(SELECT/DESELECT_CARD)によるTransfer State(tran)遷移」について。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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モード通信の初期化シーケンス詳細

フクさん
フクさん

「CMD7(SELECT/DESELECT_CARD)によるTransfer State(tran)遷移」について。

  • 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)遷移。 ← これ
フクさん
フクさん

全体フロー。

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

ま、厳密には初期化シーケンスではないのだけど、
読み書き可能な状態にするには必要なシーケンスになるねー。

太郎くん
太郎くん

そういえばそういうこと言ってたね。

CMD7(SELECT/DESELECT_CARD)のリクエスト電文

太郎くん
太郎くん

まずはCMD7(SELECT/DESELECT_CARD)のリクエスト電文かな?

フクさん
フクさん

これになる。

Bit position[31:16][15:0]
Width(bit)1616
Valuexx
DescriptionRCAstuff bits
太郎くん
太郎くん

前回のCMD3(SEND_RELATIVE_ADDR)で取得したRCAを渡せばOKって感じか。

フクさん
フクさん

まぁそうなんだけど、
CMD7(SELECT/DESELECT_CARD)は使い方が2種類ある。

太郎くん
太郎くん

SELECT/DESELECT_CARDって名称だから、そんな気はしていた・・・。

SELECT_CARD

フクさん
フクさん

まずはSELECT_CARD。
こっちが、Stand-by State(stby)からTransfer State(tran)へ遷移用。

太郎くん
太郎くん

そういう使い方になるの?

フクさん
フクさん

RCAパラメータにCMD3(SEND_RELATIVE_ADDR)を入れ込めばOK。

太郎くん
太郎くん

(意外と普通だった)

DESELECT_CARD

フクさん
フクさん

次にDESELECT_CARD。
こっちは、逆で、Transfer State(tran)からStand-by State(stby)へ遷移用になる。

太郎くん
太郎くん

パラメータとしてはRCAしかないから、
RCAにCMD3(SEND_RELATIVE_ADDR)で取得したものとは別のものをいれるのかな?

フクさん
フクさん

鋭いね。
DESELECT_CARDの場合はRCAを0値にすればOKだ。

太郎くん
太郎くん

おー!
こっちも話がシンプルだった!

CMD7(SELECT/DESELECT_CARD)のレスポンス(R1b)

フクさん
フクさん

そして、CMD7(SELECT/DESELECT_CARD)のレスポンスはR1bフォーマットになる。

太郎くん
太郎くん

R1bはR1レスポンスにbusyが付くやつだよね。
以前ここでやった。

フクさん
フクさん

そうそう。

太郎くん
太郎くん

しかし、なんでbusy付きなんだろ?

フクさん
フクさん

どうも読み書き可能状態では、高速動作するためにSDカード内部のいろいろなブロックが駆動状態になるみたいなんだよね。
それの準備が終わるまではbusyになるようだ。

太郎くん
太郎くん

ほー。

フクさん
フクさん

よって、Stand-by State(stby)とTransfer State(tran)では
Stand-by State(stby)の方が消費電流が少ない!

太郎くん
太郎くん

おー!

フクさん
フクさん

かもしれない。

太郎くん
太郎くん

おーい!

フクさん
フクさん

ここら辺はSDカード内部設計依存だからねー。
でも、頻繁に書かない運用をするならば、可能な限りStand-by State(stby)を維持して、
いろいろ読み書きするタイミングでTransfer State(tran)へ遷移するような設計にしておいた方が無難だろう。

太郎くん
太郎くん

まぁ消費電流は後々問題になり易いから対策打てるものを打てた方が良いよねー。

フクさん
フクさん

といわけで、SDカードの初期化シーケンスの話は終わり。

まとめ

フクさん
フクさん

まとめだよ。

  • 「CMD7(SELECT/DESELECT_CARD)によるTransfer State(tran)遷移」について説明。
  • CMD7にはSELECT_CARDとDESELECT_CARDがある。
    • Stand-by State(stby)とTransfer State(tran)の遷移に使う。
    • stbyの方が省電力の可能性あり。

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

コメント

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