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

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

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

はじめに

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

フクさん
フクさん

じゃ、今回は
「CMD18(READ_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)による停止
太郎くん
太郎くん

前回のCMD17(READ_SINGLE_BLOCK)が1Blockに対して、
今回は複数Blockに対しての話だねー。

フクさん
フクさん

一応、タイミングチャートも貼っておこう。

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

CMD18(READ_MULTIPLE_BLOCK)のリクエスト

太郎くん
太郎くん

CMD18(READ_MULTIPLE_BLOCK)のパラメータも32bit長の”data address”?

フクさん
フクさん

そうだね。

太郎くん
太郎くん

まぁ最初に発行するコマンド自体はどれも一緒なんだねー。

CMD18(READ_MULTIPLE_BLOCK)のレスポンス

太郎くん
太郎くん

流れからすると、CMD18(READ_MULTIPLE_BLOCK)のレスポンスもR1フォーマットと見た!

フクさん
フクさん

正解。

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

data block

太郎くん
太郎くん

そして、複数のdata blockがR1レスポンスに追従する形でカード側から来るわけか・・・。

フクさん
フクさん

フクさん:
そうそう。

太郎くん
太郎くん

これって、放って置いたらひたすら送ってくるのかな?

フクさん
フクさん

まぁそうなるねー。
途中で範囲外エラーとかってのはあり得るけどね。

太郎くん
太郎くん

となると、頃合い見計らって、CMD12(STOP_TRANSMISSION)を投げる必要があると。

フクさん
フクさん

CMD12(STOP_TRANSMISSION)に関しては次回説明かな。

まとめ

フクさん
フクさん

まとめだよ。

  • CMD18(READ_MULTIPLE_BLOCK)による読み出しの説明。
  • CMD18のリクエストパラメータも32bit長の”data address”。
  • CMD18のレスポンスもR1フォーマット。
  • R1レスポンスに追従する形でdata blockがカード側から送出。
    • CMD12(STOP_TRANSMISSION)で止めるまで送出。

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

コメント

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