バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのSDモード通信の初期化シーケンスの「CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得」について。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
SDカードのSDモード通信の初期化シーケンス詳細
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
今回からは「CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得」について。
- 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の取得。 ← これ1回目/全2回
- CMD7(SELECT/DESELECT_CARD)によるTransfer State(tran)遷移。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
全体フロー。
![SDカードのSDモード通信の初期化シーケンスのフロー図](https://www.simulationroom999.com/blog/wp-content/uploads/2021/02/02_SDカードのSDモード通信の初期化シーケンスのフロー図-814x1024.png)
CMD3(SEND_RELATIVE_ADDR)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
まずは、コマンドのパラメータ有無かな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
CMD3にパラメータは無い。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
じゃー、送る分には悩まなくて良いねー。
CMD3(SEND_RELATIVE_ADDR)のレスポンス
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
次はレスポンスだね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
CMD3(SEND_RELATIVE_ADDR)のレスポンスはR6フォーマットになる。
R6フォーマットは以下。
Bit position | [31:16] | [15:0] |
Width(bit) | 16 | 16 |
Value | x | x |
Description | New published RCA | card status bitsのbit23,22,19,12:0 |
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
このRCAとcard status bitsが何者かってのが重要になってくるわけか。
RCA(Relative Card Address)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
ん?
RCAってなんだっけ?
以前聞いたような聞いてないような?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
確かに以前ちょっと話したかも。
ここで話したな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
結局RCAってどういうものになるの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まぁ単純に16bit長の数値だな。
この数値を記憶して、
次の手順である「CMD7(SELECT/DESELECT_CARD)によるTransfer State(tran)遷移」の時に使うことになる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
なるほど。
以前話したときもそういうこといってたね。
じゃー、これはしっかり受信して記憶しておく必要のあるパラメータってことだ。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- 「CMD3(SEND_RELATIVE_ADDR)によるPublished RCAの取得」について説明。
- CMD3(SEND_RELATIVE_ADDR)はパラメータ無しのコマンド。
- レスポンスはR6フォーマット。
- RCA(Relative Card Address)とcard status bitsを内包。
バックナンバーはこちら。
コメント