【ESP32】SDカードの読み書き CATALEX MicroSD Card Module 複数SPIで使う時の改造とか【SPI】

CATALEX MicroSD Card Module

小さいのもあるけど、何が違うんだろう?

上がバッファ回路と5V→3.3Vレギュレータ付きで、下が直結バージョンですね。直結といっても。。信号線には10kΩが入ってるようですね。

こういうのってDatasheet落ちてるから。。って安易に、ちょっと前に買ったんだけど。。ArduinoのForumで見てみると。。

https://forum.arduino.cc/t/catalex-microsd-card-reader-issues/581003/6

https://forum.arduino.cc/t/i-cannot-find-the-datasheet-for-catalex-microsd-card-adapter/347407

https://forum.arduino.cc/t/solved-nrf24-mirf-lib-micro-sd-card-works-ok-together/347787/17

いろいろなことが乗ってて参考になります。回路はこれが正しいのかな?

Catalex microSDモジュールは常にMISOを駆動し、他のSPIデバイスに干渉する可能性があることに注意してください。 チップセレクトがハイになると、SDモジュールはMISOでハイZになるはずです。 チップセレクトがハイの場合、CatalexシールドはMISOのバッファを無効にします。

らしいので、このままだと1個だけしかSPIバスに付けられないみたいですね。

チップセレクトが聞くようにするには、下記の改造が必要とのこと。。13Pinを切って8ピンとつなげるようです。

catalex.jpg

13Pinを上げて。。

pulled_up_pin.JPG

8Pinとつなげるってこういうことなんですね(笑)

mod__.JPG

チップセレクトしない場合には、下記の使っている人がいたので。。普通にも使えるようです。

Arduinoで使う場合

http://everyday-science-society.blogspot.com/2014/10/arduinosd.html

ESP32でPinを変更して使う場合

ESP32開発ボードにMicroSDカードモジュールをつける

ESP32 でのSDを使うSketchの注意

ライブラリの ArduinoのSD.h と ESP32のSD.h が違うので注意が必要みたいですね。

ESP32(ESP32-DevKitC)でmicroSDカードを使う

SDのフォーマットについても。。

https://raspberry-pi.nomad-life.net/199077/arduino/%E3%80%90esp32wifi%E3%80%91%E6%B8%A9%E6%B9%BF%E5%BA%A6%E3%82%92%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3%E3%82%84%E3%82%B9%E3%83%9E%E3%83%9B%E3%81%A7%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B/esp32%E3%81%A7sdcard%E3%81%AB%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%93%E3%81%A7%E3%81%BF%E3%82%8B

2GBまではFAT16
4GB~32GBまではFAT32

あと、ディレクトリというか、ファイル名などの指定でも、

Arduino : filename.txt
ESP32 : /filename.txt

のような指定も違うようですね。

スケッチ例→SD(esp32)→ SD_test.ino

とりあえず、このPin配置を見ながら。。

https://tom2rd.sakura.ne.jp/wp/wp-content/uploads/2019/07/esp32_pinmap.png

ブレッドボード上では。。こんな感じ。。

で。。ちゃんと動きます。

実行してみると。。こんなのが出てきます。

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:10944
load:0x40080400,len:6388
entry 0x400806b4
SD Card Type: SDHC
SD Card Size: 29844MB
Listing directory: /
DIR : /System Volume Information
FILE: /foo.txt SIZE: 13
FILE: /test.txt SIZE: 1048576
Creating Dir: /mydir
Dir created
Listing directory: /
DIR : /mydir
DIR : /System Volume Information
FILE: /foo.txt SIZE: 13
FILE: /test.txt SIZE: 1048576
Removing Dir: /mydir
Dir removed
Listing directory: /
DIR : /System Volume Information
Listing directory: /System Volume Information
FILE: /System Volume Information/IndexerVolumeGuid SIZE: 76
FILE: /System Volume Information/WPSettings.dat SIZE: 12
FILE: /foo.txt SIZE: 13
FILE: /test.txt SIZE: 1048576
Writing file: /hello.txt
File written
Appending to file: /hello.txt
Message appended
Reading file: /hello.txt
Read from file: Hello World!
Deleting file: /foo.txt
File deleted
Renaming file /hello.txt to /foo.txt
File renamed
Reading file: /foo.txt
Read from file: Hello World!
1048576 bytes read for 3311 ms
1048576 bytes written for 5446 ms
Total space: 29832MB
Used space: 1MB

 

さて。。Pinを変える場合は、以下が味噌のようです。

enum { sd_sck = 18, sd_miso = 19, sd_mosi = 23, sd_ss = 5 };

SPI.end();
SPI.begin(sd_sck, sd_miso, sd_mosi, sd_ss); SD.begin(sd_ss,SPI)

SD.begin(sd_ss,SPI)

 

 

投稿者 tom2rd

コメントを残していただけるとありがたいです

Loading Facebook Comments ...

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください