バックナンバーはこちら。
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モードに切り替える必要がある。
バックナンバーはこちら。
コメント