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

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

バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/

はじめに

SDカードのSPIモード通信の読み書き詳細の
「CMD17(READ_SINGLE_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モード通信の読み書き詳細

フクさん
フクさん

じゃ、今回は
「CMD17(READ_SINGLE_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)による停止

CMD17(READ_SINGLE_BLOCK)のリクエスト

太郎くん
太郎くん

これはCMD24(WRITE_BLOCK)の逆だから、
パラメータも32bit長の”data address”だったり?

フクさん
フクさん

正解!

太郎くん
太郎くん

まぁ必要なパラメータからするとそうなんだろうなぁって。

CMD17(READ_SINGLE_BLOCK)のレスポンス

太郎くん
太郎くん

レスポンスもR1フォーマットかな。

フクさん
フクさん

そのとおり。

SDカードSPIモードR1フォーマット

data block

太郎くん
太郎くん

R1フォーマットのレスポンスに追従する形でdata blockが来る感じかな?

フクさん
フクさん

そうだね。
下の画像でdata blockが一個だけの動作になる。
CMD17(READ_SINGLE_BLOCK)の場合はCMD12(STOP_TRANSMISSION)の発行不要だ。

SDカードのMultiple-Block-Read-OperationSPIモード図解
太郎くん
太郎くん

これは確かここでやったやつだね。

太郎くん
太郎くん

CMD24(WRITE_BLOCK)の時もそうだったけど、
1Blockだけだとシンプルなんだよなー。

フクさん
フクさん

まぁまずは1Blockの読み書きをするってあたりを目指して実装するのもありだろうね。
CMD24(WRITE_BLOCK)とCMD17(READ_SINGLE_BLOCK)で読み書きができれば、少なくともハードウェアの接続としては混じってないと言えるし。

太郎くん
太郎くん

そうだね。
動作確認と言う意味では1Block単位の読み書きまでってのはありかもね。

まとめ

フクさん
フクさん

まとめだよ。

  • CMD17(READ_SINGLE_BLOCK)による読み出しについて説明。
  • CMD17のリクエストは32bit長の”data address”のみ。
  • CMD17のレスポンスはR1フォーマット。
  • R1レスポンスに追従する形でdata blockがカード側から送られてくる。
    • CMD12(STOP_TRANSMISSION)の発行不要。

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

コメント

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