バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのSPIモード通信の読み書き詳細の
「CMD18(READ_MULTIPLE_BLOCK)による読み出し」
について。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
SDカードのSPIモード通信の読み書き詳細
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
じゃ、今回は
「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)による停止
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
前回のCMD17(READ_SINGLE_BLOCK)が1Blockに対して、
今回は複数Blockに対しての話だねー。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
一応、タイミングチャートも貼っておこう。
![SDカードのMultiple-Block-Read-OperationSPIモード図解](https://www.simulationroom999.com/blog/wp-content/uploads/2021/01/02_SDカードのMultiple-Block-Read-OperationSPIモード図解-1024x172.png)
CMD18(READ_MULTIPLE_BLOCK)のリクエスト
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
CMD18(READ_MULTIPLE_BLOCK)のパラメータも32bit長の”data address”?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうだね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
まぁ最初に発行するコマンド自体はどれも一緒なんだねー。
CMD18(READ_MULTIPLE_BLOCK)のレスポンス
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
流れからすると、CMD18(READ_MULTIPLE_BLOCK)のレスポンスもR1フォーマットと見た!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/まるフクロウ.png)
正解。
![SDカードSPIモードR1フォーマット](https://www.simulationroom999.com/blog/wp-content/uploads/2021/01/03_SDカード-SPIモード-R1フォーマット.png)
data block
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
そして、複数のdata blockがR1レスポンスに追従する形でカード側から来るわけか・・・。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
フクさん:
そうそう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
これって、放って置いたらひたすら送ってくるのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
まぁそうなるねー。
途中で範囲外エラーとかってのはあり得るけどね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
となると、頃合い見計らって、CMD12(STOP_TRANSMISSION)を投げる必要があると。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
CMD12(STOP_TRANSMISSION)に関しては次回説明かな。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- CMD18(READ_MULTIPLE_BLOCK)による読み出しの説明。
- CMD18のリクエストパラメータも32bit長の”data address”。
- CMD18のレスポンスもR1フォーマット。
- R1レスポンスに追従する形でdata blockがカード側から送出。
- CMD12(STOP_TRANSMISSION)で止めるまで送出。
バックナンバーはこちら。
コメント