バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのSDモード通信の初期化シーケンスのCMD8(SEND_IF_COND)によるSDv2判定及びサポート電圧判定について。
今回はレスポンスパラメータ関連の話。
現状は選択肢が少なくNGパターンも皆無。
よって、ほぼレスポンスパターンは限られるが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モード通信の初期化シーケンス詳細

今回は、「CMD8(SEND_IF_COND)によるSDv2判定及びサポート電圧判定」について。
前回はこれのリクエスト側の話だったけど、今回はレスポンス側の話になる。
- 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)遷移。

フロー図も載せておく。

CMD8(SEND_IF_COND)のレスポンス(R7)

CMD8のレスポンスの話になるが、
レスポンスフォーマットはR7フォーマットというものになる。

ほう。
構成はどんな感じになるの?

こんなん。
Bit position | [37:31] | [30:14] | 13 | 12 | [11:8] | [7:0] |
Width(bits) | 6 | 18 | 1 | 1 | 4 | 8 |
Value | ‘001000’ | ‘00000h’ | x | x | x | x |
Description | Command | Reserved | PCIe 1.2V Support | PCIe Response | Voltage accepted | Echo-back of check pattern |

あれ?
これって、前回のCMD8のリクエスト電文と似てない?

そうだね。
前回のCMD8リクエスト電文も載せておこう。
Bit position | [37:31] | [30:14] | 13 | 12 | [11:8] | [7:0] |
Width(bits) | 6 | 18 | 1 | 1 | 4 | 8 |
Value | 001000′ | 00000h’ | x | x | x | x |
Description | Command | Reserved | PCIe 1.2V Support | PCIe Availability | Voltage Supplied | Check pattern |

やっぱり、そっくりだ!

まぁイメージとしては、
リクエストが受けつけられたかどうかを返しているだけって感じだねー。
PCIe 1.2V SupportとPCIe Availability

PCIe 1.2V SupportとPCIe Responseのところはなんとなくわかるぞ。
Supportして有効化できればフラグとして立つやつだな。

その通り。
まぁどのみち今回はPCIeは触れないんで、パラメータの存在だけ覚えておいて。

はいよー。
Voltage accepted

これも・・・Voltage SuppliedでリクエストしたものがOKならそのまま帰ってくる感じかな?

そうだね。
まぁ現状は1パターンしか選択肢がないから、NGなパターンが有っても困るものではあるけどねー。
一応、値と意味の表を載せるけど、前回のVoltage Suppliedと一緒だ。
Voltage accepted | Value Definition |
---|---|
0000b | Not Defined |
0001b | 2.7~3.6[V] |
0010b | Reserved |
0100b | Reserved |
1000b | Reserved |
Others | Not Defined |

たしかに一緒だ。
現状では、0001bをリクエストして0001bが返ってくればOKってことだね。
Echo-back of check pattern

Echo-back of check patternが前回言ってた、Check patternにセットした値がそのまま帰ってくるっていう。

そうそう。
AAhってリクエストしたらレスポンスAAhが埋まってるはずのパラメータになる。

ここら辺の全パラメータの辻褄が合っていればSDv2で、辻褄が合っていなければ使用不可って感じか。

そうだね。
まぁ現状では無いとは思うけど、
今後のSDカード仕様如何では上位仕様だけを持った特殊なSDカードとか登場して、
古い仕様だとサポートできないって時がくるのかもしれないねー。

そこらへんは寿命の長い仕様の宿命だねー。
まとめ

まとめだよ。
- CMD8(SEND_IF_COND)によるSDv2判定及びサポート電圧判定のレスポンス側の説明。
- レスポンスはリクエストと同等の構成。
- リクエストが受けつけられたかどうかを返しているだけ。
- レスポンスはリクエストと同等の構成。
- 現状は選択肢が少ないので、ほぼレスポンスパターンは限られるが今後のSD仕様の追加次第ではどうなるか分からない。
バックナンバーはこちら。
コメント