バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのSPIモード通信の初期化シーケンスの中の駆動電圧判定について。
登場人物
博識フクロウのフクさん
イラスト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カードのSPIモード通信の初期化シーケンス詳細
じゃ、今回は駆動電圧判定のところからだね。
- 初期状態に戻す
- SDv2以降判定
- 駆動電圧判定 ← これ
- 読み書き可能状態へ
- SDv2の容量判定
一応、初期化シーケンスのフロー図も貼っておこう。
駆動電圧判定
フローとしては、CMD58(READ_OCR)を発行してるようだけど?
そうだね。
ちなみに余談だけど、CMD58はSPIモードとSDモードで意味が変わるんで。
SDモードはREAD_EXTRA_MULTIってコマンドでUHS-Ⅱ以降という高速SDインターフェースの場合に使えるものだねー。
UHSについては、IT用語辞典から引用
UHSとは、SDHC/SDXCメモリーカードで用いられる高速な接続・通信仕様。業界団体のSDアソシエーションが策定したもので、カードとリーダーの両者が対応している場合に利用できる。どちらかが対応していない場合には従来方式での通信となる。最高104MB/s(メガバイト毎秒)での通信が可能なUHS-I、同312MB/sのUHS-II、同624MB/sのUHS-IIIが定められている。UHS-II/IIIでは端子形状が拡張され、従来の端子の下に二列目の端子群が追加された。カードとリーダーの両方が新しい端子形状の場合に最高速度での通信ができ、いずれかが従来型の場合でも従来方式の通信ができるようになっている。UHS対応製品で保証される伝送速度を表示する「UHSスピードクラス」(UHS Speed Class)が定められており、「Class 1」では最低でも10MB/sでの通信を、「Class 3」では30MB/sでの通信を保証する。
IT用語辞典 https://e-words.jp/w/UHS.html
名前的には複数ブロックの読み出し用かな?
そうなんだけど、複数ブロック読み出しは
通常はCMD18(READ_MULTIPLE_BLOCK)の方を使うんで、今回のシリーズでは使わない想定かなー。
UHS-Ⅱであることが前提の仕様みたいだしね。
ま、どっちにしても今説明しているSPIモードとは関係のない話だったねー。
というわけで話を戻す。
CMD58(READ_OCR)だっけか?
OCRが読めるってことだと思うのだけど、どういったレスポンスになるんだろう?
CMD58のレスポンス(R3 フォーマット)
CMD58(READ_OCR)のレスポンスはR3というレスポンスフォーマットになる。
R3は簡単に言うと、R1の後ろに32bitのOCRがくっ付いたもの。
一応、R1フォーマットも載せておこう。
となると、あとはOCRが何者かってところか。
OCR(Operation Conditions Register)
OCRはOperation Conditions Registerの略。
SDカードを制御する上で必要な情報を得られる。
32bitのデータでビットアサインは以下になる。
bit Position | Definition |
---|---|
[0-14] | reserved |
15 | 2.7~2.8[V] |
16 | 2.8~2.9[V] |
17 | 2.9~3.0[V] |
18 | 3.0~3.1[V] |
19 | 3.1~3.2[V] |
20 | 3.2~3.3[V] |
21 | 3.3~3.4[V] |
22 | 3.4~3.5[V] |
23 | 3.5~3.6[V] |
24 | Switching to 1.8V Accepted |
[25-26] | reserved |
27 | Over 2TB support Status |
28 | reserved |
29 | UHS-Ⅱ Card Status |
30 | Card Capacity Status(CCS) |
31 | Card power up status bit(busy) |
15bitから23bitの電圧範囲っぽいのは何?
太郎くんが言ったそのもので、
駆動するための電圧範囲だね。
あー、これで自分が制御する装置の駆動電圧とミスマッチするようであれば、使用不可ってことになるのか!
そうそう。
それが、今回の駆動電圧判定のキモとなるところだね。
まとめ
まとめだよ。
- SDカードのSPIモード通信の初期化シーケンスの中の駆動電圧判定について説明。
- CMD58(READ_OCR)を送ると、R3フォーマットのレスポンスが返る。
- R3フォーマットはR1にOCRが付加されたもの。
- OCRのbit15~bit23が駆動可能電圧を示している。
- 自装置の駆動電圧が範囲外の場合は制御不可。
バックナンバーはこちら。
コメント