バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのSDモード通信のCMD13(SEND_STATUS/SEND_TASK_STATUS)の話の続き
登場人物
博識フクロウのフクさん

イラスト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モード通信のCMD13(SEND_STATUS/SEND_TASK_STATUS)の切替

前回は、CMD13(SEND_STATUS/SEND_TASK_STATUS)の話だったけど、
SEND_TASK_STATUS側の話が残ってるんだよねー。

そういえば、CMD13(SEND_STATUS/SEND_TASK_STATUS)って
どうすれば、SEND_STATUSになったり、SEND_TASK_STATUSになったりするんだっけ?

そういえば説明してなかったな。
単純にCMD13(SEND_STATUS/SEND_TASK_STATUS)を送る時のパラメータで切り替える。
CMD13(SEND_STATUS/SEND_TASK_STATUS)のリクエストパラメータは以下になる。
Bit position | [31:16] | [15] | [14:0] |
Width(bit) | 16 | 1 | 15 |
Value | x | x | – |
Description | RCA | Send Task Status Register | stuff bits |

RCAは確かRelative Card Addressの略でCMD3(SEND_RELATIVE_ADDR)で取得出るやつだったね。
元々はCMD7(SELECT/DESELECT_CARD)によるTransfer State(tran)遷移で使うものだったと思ったけど、
CMD13(SEND_STATUS/SEND_TASK_STATUS)でも使うんだね。

(意外と覚えてるな・・・。)

とすると、
Send Task Status RegisterのbitでSEND_STATUSとSEND_TASK_STATUSを切り替えるってことになるのか。
(消去法だ!!)

そうそう。
前回のSEND_STATUSはSend Task Status Registerのbitを0にした場合の応答だね。
SDカードのSDモード通信のCMD13(SEND_STATUS/SEND_TASK_STATUS)のSEND_TASK_STATUS側の応答

で、Send Task Status Registerのbitを1にすると、SEND_TASK_STATUSのリクエストになるとして、応答はどうなるの?

構成はR1のcard statusのところにTask Statusが入ることになる。
Bit position | 47 | 46 | [45:40] | [39:8] | [7:1] | 0 |
Width(bit) | 1 | 1 | 6 | 32 | 7 | 1 |
Value | ‘0’ | ‘0’ | x | x | x | ‘1’ |
Description | start bit | transmission bit | command index | card status | CRC7 | end bit |
Task Statusの内容

で、Task Statusの内容はどうなるの?

こんな感じの32bitデータだ。
Bits | Identifier | Value |
---|---|---|
31 | STATUS_TASK_31 | ‘0’:Not Ready、’1’:Ready |
30 | STATUS_TASK_30 | ‘0’:Not Ready、’1’:Ready |
… | … | … |
0 | STATUS_TASK_0 | ‘0’:Not Ready、’1’:Ready |

ん?
STUTAUS_TASKってのが32個あって、それの状態を示している・・・
ってことなんだと思うのだけど、
STUTAUS_TASKってなんだ???

Command Queueの状態だね。

(どんどん知らん単語が出てくる・・・)

あー。
ここら辺を説明しようと思うと、
- パフォーマンスエンハンスメントレジスタ
- 上記の読み書き
- CQ mode
の説明が必要だね。

・・・。

まぁ、SDカードの読み書きをするだけであれば、不要な知識ではあるけど・・・。
どーする?

一応、聞いておこうかな・・・。
分からないにしても、どういったものがあるのかは知っておきたいかも。

よし。
SD読み書きの話はここで終わりとして、
次回からは「応答性向上」の話をしよう。
まとめ

まとめだよ。
- CMD13(SEND_STATUS/SEND_TASK_STATUS)の話の続きを説明。
- CMD13はSend Task Status RegisterでSEND_STATUS/SEND_TASK_STATUSを切替できる。
- Task StatusはCommand Queueの状態監視用。
- Command Queueについては次回以降説明。
バックナンバーはこちら。
コメント