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