バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
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モードとSDモードで若干意味合いが変わる。

そういえば、SPIモードとSDモードはどうやって切り替えるの?
専用の切り替えピンがあるとか?

一応、1番ピンのラインを電源投入時にLowにしておくとSPIモードになるね。
HZ(ハイインピーダンス)にしておくとSDモードになる。

(ようわからんが、そのうち説明してくれるのだろう。)

(とりあえず理解した振りしてるなー。ま、いっか。)

まずはSDカードのピン配置はこういう配置になってる。


9番ピンだけ反対側にきてるんだ。
SDカードのSPIモード時のピンアサイン

そして、SPIモード時のピンアサインはこれ。
ちなみにInput/OutputはSDカード側から見た場合の表現になってる。
PIN | Name | Type | Description |
---|---|---|---|
1 | CS | Input | Chip Select(SS) |
2 | DI | Input | Data In (MOSI) |
3 | VSS | ||
4 | VDD | ||
5 | SCLK | Input | Clock(SCLK) |
6 | VSS2 | ||
7 | DO | Output | Data Out(MISO) |
8 | RSV | Reserve | |
9 | RSV | Reserve |

なるほど。
ここにSPIの信号線を接続すればいいのか。
SDカードのSDモード時のピンアサイン

そして、SDモード時のピンアサイン。
さっきと同じくInput/OutputはSDカード側から見た場合の表現。
PIN | Name | Type | Description |
---|---|---|---|
1 | CD/DAT3 | Input/Output | CardDetecct/DataLine[Bit 3] |
2 | DI | Input/Output | Command/Response |
3 | VSS | ||
4 | VDD | ||
5 | CLK | Input | Clock |
6 | VSS2 | ||
7 | DAT0 | Input/Output | DataLine[Bit0] |
8 | DAT1 | Input/Output | DataLine[Bit1] |

さっきのSPIモードと比べるとInput/Output兼用が多いね?

1番ピンのCardDetecctって何?

1番ピンはSDカード内で50[Ω]でプルアップしてるんで、
これを見てカードの挿抜確認ができる。

1番ピンと言えば、SPIモード、SDモード切替用のピンとか言ってなかったっけ?

うん。
結構この1番ピンの使い方が起動時の曲者だったりするね。
それぞれ以下の流れになる。
- SPIモードにする場合
- 起動時ホスト側でLowにする。(これでSPIモード)
- CardDetecctするためにホスト側をHZにする。
- High検知でCardDetecct
- SET_CLR_CARD_DETECTコマンドでプルアップ解除
- SDモードにする場合
- 起動後ホスト側をHZにする。
- High検知でCardDetecct
- SET_CLR_CARD_DETECTコマンドでプルアップ解除

うわー結構いろいろやってるんだなー。

あと、SPIモードと比べると、DATなんとかが4本あるね?

うん。
読み書きデータを送る際は最大4bitシリアルで送受信可能なのがSDモード

最大?
ということは4bit固定じゃない?

SET_BUS_WIDTHコマンドで切替ができるね。
と言っても、1bitか4bitかを切り替えるだけなんだけど。
デフォルトは1bitだね。

うーん、なんかバリエーションが多くて混乱してきた。

まぁ一個一個把握していけば良いと思うよー。
まとめ

まとめだよ。
- SDカードのピン配置説明。
- SPIモード時のピンアサイン説明。
- SDモード時のピンアサイン説明。
- 1番ピンのモード変更及びCardDetecctフローを説明。
- LowにしたりHZにしたり、コマンド投げて内部プルアップ解除と大忙し。
バックナンバーはこちら。
コメント