microSD カード

microSD カードモジュールです。



購入

秋月で購入しました。

細ピンヘッダが付属しているのでハンダ付けするだけです。

ピンが何本か省略されたタイプもあります (microSD は全結線に 8 ピン必要)。こちらは Amazon で購入しました。普通のピンヘッダが付属しますので、ブレッドボードで使うのなら細ピンヘッダを用意しましょう。

余っている変換アダプタと L 字ピンヘッダを使って自作する方法もありますが、工作難易度は割と高いです。



各部詳細

microSD の動作電圧は 2.7 - 3.6V なので、UNO 等の 5V 動作 Arduino では信号の電圧を 3.3V に落としてやる...つまりロジックレベル変換が必要になります。ロジックレベル変換に分圧回路を使ってもいいのですが、今回は専用の IC を使ってみます。

このモジュールは Fairchild Semiconductor 社製 FXMA108 とパスコンをパッケージにしたもので、最大 8 本の信号線のロジックレベル変換が可能です。こちらも細ピンヘッダが付属しているのでハンダ付けしておきます。



動作確認

Arduino UNO との接続は以下のようになります。

Arduino と microSD カードスロットとの接続は SPI (Serial Peripheral Interface) となります。SPI 用の 4 本の信号線はロジックレベル変換が必要となります。

SPI microSD FXMA108 Arduino UNO
(3.3V 側) (5V 側)
SCK 5 CLK A4 B4 13 (SCK)
MISO 7 DAT0 A2 B2 12 (MISO)
MOSI 3 CMD A6 B6 11 (MOSI)
SS 2 CD / DAT3 A7 B7 4
- 4 VDD VCCA - 3V3
- 6 VSS GND / OE GND
- - - VCCB 5V

テストスケッチは [ファイル | スケッチの例 | SD | CardInfo] です。SS (スレーブ選択ピン) はスケッチ内で 4 が指定されていますが、microSD カード (の載った) シールドによっては 4 ではない事があるので注意してください。

スケッチを実行し、シリアルモニタを開くと、microSD カードの情報が表示されます。

Arduino UNO 互換機の中には 5V / 3.3V を切り替えられるものがありますが...

3.3V 動作の場合にはロジックレベル変換が不要なのでシンプルな接続となります。Arduino DueArduino ProArduino Pro MiniPro Micro などの 3.3V 動作 Arduino でも同様です。

動作が安定しない場合には 3.3V と GND の間に 0.1μF のセラミックコンデンサ (パスコン) を入れるか、MISO (DAT0 / DO) になっているピンを 10kΩ抵抗でプルアップしてください。

ESP-WROOM-02

ESP-WROOM-02 でも microSD カードが使えます。SS に IO4 を使うとスケッチの変更が不要です (ESP-WROOM-02 の本来の SS は IO15)。

microSD ESP-WROOM-02
1 DAT2 (NC)
2 CD / DAT3 4
3 CMD IO13 (MOSI)
4 VDD 3V3
5 CLK IO14 (SCK)
6 VSS GND
7 DAT0 IO12 (MISO)
8 DAT1 (NC)
9 SW1 (NC)
10 SW2 (NC)

ESP-WROOM-32

ESP-WROOM-32 でも microSD カードが使えます。SS に IO4 を使うとスケッチの変更が不要です (ESP-WROOM-32 の本来の SS は IO5)。MISO はプルアップしてください。

microSD ESP-WROOM-32
1 DAT2 (NC)
2 CD / DAT3 IO4
3 CMD IO23 (VSPID)
4 VDD 3.3
5 CLK IO18 (VSPICLK)
6 VSS GND
7 DAT0 IO19 (VSPIQ)
8 DAT1 (NC)
9 SW1 (NC)
10 SW2 (NC)

STM32F103

STM32F103 でも microSD カードが使えます。スケッチの変更は不要です。

microSD STM32F103C8T6
1 DAT2 (NC)
2 CD / DAT3 PA_4 (SS)
3 CMD PA_7 (MOSI)
4 VDD 3.3
5 CLK PA_5 (SCK)
6 VSS GND
7 DAT0 PA_6 (MISO)
8 DAT1 (NC)
9 SW1 (NC)
10 SW2 (NC)

BBC micro:bit

BBC micro:bit でも。SS に 4 を使うとスケッチの変更が不要です (micro:bit の本来の SS は 16)。

microSD micro:bit
1 DAT2 (NC)
2 CD / DAT3 4
3 CMD 15 (MOSI)
4 VDD 3.3
5 CLK 13 (SCK)
6 VSS GND
7 DAT0 14 (MISO)
8 DAT1 (NC)
9 SW1 (NC)
10 SW2 (NC)

ICSP / SPI ピンヘッダを使う場合

ICSP / SPI ピンヘッダのあるボードではこちらを使う事もできます。

microSD ICSP / SPI
1 DAT2 (NC)
2 CD / DAT3 (4)
3 CMD 4 MOSI
4 VDD (3.3V)
5 CLK 3 SCK
6 VSS 6 GND
7 DAT0 1 MISO
8 DAT1 (NC)
9 SW1 (NC)
10 SW2 (NC)

簡単に使うには

microSD カードを手っ取り早く試してみたいのなら、イーサーネットシールド2タッチスクリーンシールド 等のコンボになっているシールドを使うか、最初からレベル変換 IC の載ったモジュールを購入するといいでしょう。

SPI microSD Arduino Uno ESP-WROOM-02
SCK SCK 13 (SCK) IO14 (SCK)
MISO MISO 12 (MISO) IO12 (MISO)
MOSI MOSI 11 (MOSI) IO13 (MOSI)
SS CS 4 IO4
- VCC 3V3 / 5V 3V3
- GND GND GND

3.3V / 5V 両用なので便利です。

See Also:



信号線

microSD カードモジュールの表記と SPI 信号の対応表です。

SPI MMC SD miniSD microSD OTHER
SS 1 RES 1 CD / DAT3 1 CD / DAT3 2 CD / DAT3 CS / RES
MOSI 2 CMD 2 CMD 2 CMD 3 CMD DI / CMD
3 VSS1 3 VSS1 3 VSS1 6 VSS GND
4 VDD 4 VDD 4 VDD 4 VDD 3.3V / VCC
SCK 5 CLK 5 CLK 5 CLK 5 CLK SCLK
6 VSS2 6 VSS2 6 VSS2 GND
MISO 7 DAT 7 DAT0 7 DAT0 7 DAT0 DO / DAT
8 DAT1 8 DAT1 8 DAT1
9 DAT2 9 DAT2 1 DAT2
10 NC
11 NC
CD / SW1 / SW2 / C-D / CDN
(カード検出用ピン)

microSD カードモジュールによってシルク印刷がバラバラだったり、スケッチのコメントもバラバラだったりして混乱しますよね。


ここにある情報が役に立って、「調べる手間が省けたからオマイに飯でもおごってやるよ」 というハートウォーミングな方がいらっしゃいましたら、下のボタンからどうぞ。

メニュー: