FileSystem, FAT, FatFs, SD-Card,SPI,
バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのSPIモード通信の読み書き詳細の
「CMD25(WRITE_MULTIPLE_BLOCK)による書き込み」
について。
登場人物
博識フクロウのフクさん

イラスト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モード通信の読み書き詳細

じゃ、今回は
「CMD25(WRITE_MULTIPLE_BLOCK)による書き込み」
について。
- 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)による停止
CMD25(WRITE_MULTIPLE_BLOCK)のリクエスト

じゃ、まずはCMD25(WRITE_MULTIPLE_BLOCK)のリクエストだね。

CMD25(WRITE_MULTIPLE_BLOCK)のパラメータは、
CMD24(WRITE_BLOCK)と同じで、32bit長の”data address”になる。

あれ?
一緒なんだ。

ま、最初だけね。
CMD25(WRITE_MULTIPLE_BLOCK)のレスポンス

CMD25(WRITE_MULTIPLE_BLOCK)のレスポンスもシンプルで、R1フォーマットになる。


(うーん、ここまでは穏やかだ。)
CMD25(WRITE_MULTIPLE_BLOCK)のData Block転送

そして本題のData Block転送

やっぱりそれかー。

まぁここでやったやつだよね。

そうそう
一応、その時の画像も貼っておこう。

各種token

ここまで、コマンド、データの話をしていたが、
data blockの先頭にStart Block tokenが付いて、
data blockに対するresponseにdata response tokenが付いて、
全data block送信完了時にSTOP_TRAN tokenが付く。

まぁ画像的にはそんなのが居るね。
具体的なのはわからないけど。

一部のtokenは以前の回でもやったけど、
次回はそこら辺を詳しく説明しよう。
まとめ

まとめだよ。
- 「CMD25(WRITE_MULTIPLE_BLOCK)による書き込み」について説明。
- CMD25のパラメータは32bit長の”data address”
- CMD24(WRITE_BLOCK)と一緒。
- CMD25のレスポンスはR1フォーマット。
- R1レスポンスの後にData Block転送。
バックナンバーはこちら。
コメント