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ピンとつなげるようです。
13Pinを上げて。。
8Pinとつなげるってこういうことなんですね(笑)
チップセレクトしない場合には、下記の使っている人がいたので。。普通にも使えるようです。
Arduinoで使う場合
http://everyday-science-society.blogspot.com/2014/10/arduinosd.html
ESP32でPinを変更して使う場合
ESP32 でのSDを使うSketchの注意
ライブラリの ArduinoのSD.h と ESP32のSD.h が違うので注意が必要みたいですね。
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
SD Card Pin | EPS32 (VSPI interface) | EPS32 (HSPI interface) |
---|---|---|
GND | GND | GND |
VCC | V5 | V5 |
MISO | 19 MISO | 12 |
MOSI | 23 MOSI | 13 |
SCK | 18 SCK | 14 |
CS | 5 SS | 15 |
ブレッドボード上では。。こんな感じ。。
で。。ちゃんと動きます。
実行してみると。。こんなのが出てきます。
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)
コメントを残していただけるとありがたいです