バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのSDモード通信について。
登場人物
博識フクロウのフクさん
![指差しフクロウ](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モード通信
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
SDカードのSPIモード通信はとりあえず一段落追加感じだな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.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)
そうそう。
そろそろそっちもやっていこうかと思う。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
SPIと似たような感じになるのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
まぁ同期シリアルって意味では似てるかなー。
ただ、
- command/responseの双方向のCMDライン
- Read/Write Blockの双方向のDATAライン
があって、結構一気にいろいろなやり取りができる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
SPIよりも高度な通信方式って感じ?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうだね。
DATAラインも最大で4bitなんで、スループットは単純計算で4倍だ。
まぁ同期クロックの速度にも依存はするが、
クロック自体はSPIと似たような感じになることが多いし、4倍と思っておけばOKかな。
実際の波形パターン
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
とりあえず、どんな感じの波形になるか見せてもらえればわかる気がする。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
一応描いてみた。
![SDカードのSDモード通信例](https://www.simulationroom999.com/blog/wp-content/uploads/2021/01/02_SDカードのSDモード通信例.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
クロックに同期するのはSPIと一緒だね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
CMDは1本だけど、DATが4本あるから、これでスループット4倍ってことになるのか。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
ちなみに、SDモードは1bitモードと4bitモードがあるんで、
1bitモードだとDAT0だけで通信することになる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
1bitを選択する利点ってあるの?
折角のスループット4倍が得られなくなるんじゃない?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
まぁそうなんだよねー。
それほど利点らしい利点は思いつかないが、
マイコンとSDカードの距離がそこそこ離れている場合は1bitモードの方が安定する。
ってのはあるかもしれない。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
1bitモードの方が安定?
なんで?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
以前もちょっと言ったけど、
回線インピーダンスの都合でどこかの線が遅延する可能性がある。
1bitだったら遅延もへったくれもないんで安定。
とはいえ、CMDとCLKのラインは別なんで、この理屈もちょっと怪しいかな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
ということは4bitモードにすべきってことになるのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうだね。
まぁデフォルトが1bitモードになってるんで、4bitモードにするには対応したコマンドを送ってあげる必要はある。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
デフォルトが1bitモードなのか。
また、面倒な。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
しようがない。そういう仕様になってるんだし。
SDモードの話の続き
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
次回からはSPIモードの時と同じように、以下を押さえていくことになると思う。
- No data Operation
- (Multiple) Block Read Operation
- (Multiple) Block Write Operation
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
あー、SPIの時にやったね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
大体一緒なのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
そうだねー。
雰囲気としては一緒かなー。
ただ、扱うデータの大きさや、command/responseのラインとRead/Writeのラインが別になってるんで、タイミングが違うとかは出てくるはずだよ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
だったら、一応確認しておいた方がよさそうだね。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- SDモード通信について確認。
- SPIと同じく同期シリアル通信に該当する。
- ただし、command/responseはCMDライン、read/writeはDATライン
- DATラインは最大4bitのラインとなる。
- SDモードはデフォルトでDAQ0だけを使う1bitモードなので、commandで4bitモードに切り替える必要がある。
バックナンバーはこちら。
コメント