【FileSystem】車載外部ストレージ その44【SD読み書きSPIモード④】

【FileSystem】車載外部ストレージ その44【SD読み書きSPIモード④】 車載外部ストレージ

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フォーマットになる。

SDカードSPIモードR1フォーマット
太郎くん
太郎くん

(うーん、ここまでは穏やかだ。)

CMD25(WRITE_MULTIPLE_BLOCK)のData Block転送

フクさん
フクさん

そして本題のData Block転送

太郎くん
太郎くん

やっぱりそれかー。

太郎くん
太郎くん

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

フクさん
フクさん

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

SDカードのMultiple-Block-Write-OperationSPIモード図解

各種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転送。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました