バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのSPIモード通信の読み書き詳細の
「CMD12(STOP_TRANSMISSION)による停止」
について。
登場人物
博識フクロウのフクさん
![指差しフクロウ](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)
今回はSPIモード読み書きに関する話としては最後で、
「CMD12(STOP_TRANSMISSION)による停止」
について。
- 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/お休みフクロウ.png)
タイミングチャートも貼っておこう。
![SDカードのMultiple-Block-Read-OperationSPIモード図解](https://www.simulationroom999.com/blog/wp-content/uploads/2021/01/02_SDカードのMultiple-Block-Read-OperationSPIモード図解-1024x172.png)
CMD12(STOP_TRANSMISSION)のリクエスト
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.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/技術者02アップ.png)
そして、レスポンスもR1だ!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/ばってんフクロウ.png)
惜しい!
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
って、ことはR1bか!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/まるフクロウ.png)
正解。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
busy付きってことは、
data block送信から通常状態に戻るのにちょっと時間がかかることがあり得るってことなのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
まぁSDカード内部の設計次第な面ではあるけど、
内部でモード切替相当のことはやってそうだし、busy仕様が入っている方が安全ってことなのだろう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
そう考えると良くできた仕様だよねー。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうだね。
どのメーカも守ってるルールなわけだから、
しっかりした仕様だと思うよ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
とりえあず、SPIモードの読み書きが終わったから
次回からはSDモードの方になるのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
そうだね。
でも、SDモードでも流れはそれほど変わらないからなー。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
(ほほう。それはチョロそうだ。)
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- CMD12(STOP_TRANSMISSION)による停止について説明。
- CMD12のリクエストパラメータはなし。
- CMD12のレスポンスはR1bフォーマット。
- busy付きなのはだたdata block転送モードを解除するのに時間が必要になることを想定しているためと思われる。
バックナンバーはこちら。
コメント