バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのSPIモード通信の読み書き詳細の
「Start Block/data Response/STOP_TRAN tokenの発行」
について。
登場人物
博識フクロウのフクさん
イラスト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モード通信の読み書き詳細
じゃ、今回は
「Start Block/data Response/STOP_TRAN tokenの発行」
について。
- CMD24(WRITE_BLOCK)による書き込み
- ACMD23(SET_WR_BLK_ERASE_COUNT)による消去ブロック数指定
- CMD25(WRITE_MULTIPLE_BLOCK)による書き込み
- Start Block/data Response/STOP_TRAN tokenの発行 ← これ
- CMD17(READ_SINGLE_BLOCK)による読み出し
- CMD18(READ_MULTIPLE_BLOCK)による読み出し
- CMD12(STOP_TRANSMISSION)による停止
そして、(Multiple) Block Write Operation(SPIモード)の図解
Start Block token
そういえば、Start Block tokenってのが最初に付くんだよね?
そうだね。
ここでも語ってはいるが、
具体的なデータとしては”FCh”を投げればOK。
Data Block転送のdata Response token
data Response tokenってのは説明されてなかった気がするな。
そういえば説明してなかったな。
今思い出した。
こんなデータになる。
statusってのは何になるの?
data Response tokenのstatus
data Response tokenのstatusは以下のような意味になる。
‘010’ | Data accepted. |
‘101’ | Data rejected due to a CRC error. |
‘110’ | Data rejected due to a Write error. |
ほー。
ということうは、
‘010’以外はエラーってことだね。
そうなるね。
STOP_TRAN token
これは以前説明したやつだ。
確かに、聞いた気がする。
こんなのだった。
‘FDh’を送ればOKだね。
SDカードとしては、このSTOP_TRAN tokenが来るまでは書き込みデータとして受け続ける感じになるねー。
なるほど。
だから先にACMD23(SET_WR_BLK_ERASE_COUNT)を投げて
消去ブロック数を教えておいた方が良いのかー。
まとめ
まとめだよ。
- Start Block/data Response/STOP_TRAN tokenの発行について説明。
- Start Block tokenは’FCh’。
- data Response tokenにはstatusパラメータが乗る。
- ‘010’であれば正常。
- STOP_TRAN tokenは’FDh’。
バックナンバーはこちら。
コメント