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転送。
バックナンバーはこちら。
コメント