-
Notifications
You must be signed in to change notification settings - Fork 7.6k
SD_MMC update #8298
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SD_MMC update #8298
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,21 +1,59 @@ | ||||||||||||||
/* | ||||||||||||||
* Connect the SD card to the following pins: | ||||||||||||||
* pin 1 - D2 | Micro SD card | | ||||||||||||||
* pin 2 - D3 | / | ||||||||||||||
* pin 3 - CMD | |__ | ||||||||||||||
* pin 4 - VDD (3.3V) | | | ||||||||||||||
* pin 5 - CLK | 8 7 6 5 4 3 2 1 / | ||||||||||||||
* pin 6 - VSS (GND) | ▄ ▄ ▄ ▄ ▄ ▄ ▄ ▄ / | ||||||||||||||
* pin 7 - D0 | ▀ ▀ █ ▀ █ ▀ ▀ ▀ | | ||||||||||||||
* pin 8 - D1 |_________________| | ||||||||||||||
* ║ ║ ║ ║ ║ ║ ║ ║ | ||||||||||||||
* ╔═══════╝ ║ ║ ║ ║ ║ ║ ╚═════════╗ | ||||||||||||||
* ║ ║ ║ ║ ║ ║ ╚══════╗ ║ | ||||||||||||||
* ║ ╔═════╝ ║ ║ ║ ╚═════╗ ║ ║ | ||||||||||||||
* Connections for ║ ║ ╔═══╩═║═║═══╗ ║ ║ ║ | ||||||||||||||
* full-sized ║ ║ ║ ╔═╝ ║ ║ ║ ║ ║ | ||||||||||||||
* SD card ║ ║ ║ ║ ║ ║ ║ ║ ║ | ||||||||||||||
* ESP32-S3 DevKit | 21 47 GND 39 3V3 GND 40 41 42 | | ||||||||||||||
* ESP32-S3-USB-OTG | 38 37 GND 36 3V3 GND 35 34 33 | | ||||||||||||||
* ESP32 | 4 2 GND 14 3V3 GND 15 13 12 | | ||||||||||||||
* Pin name | D1 D0 VSS CLK VDD VSS CMD D3 D2 | | ||||||||||||||
* SD pin number | 8 7 6 5 4 3 2 1 9 / | ||||||||||||||
* | █/ | ||||||||||||||
* |__▍___▊___█___█___█___█___█___█___/ | ||||||||||||||
* WARNING: ALL data pins must be pulled up to 3.3V with external 10k Ohm resistor! | ||||||||||||||
* Note to ESP32 pin 2 (D0) : add 1K pull up after flashing | ||||||||||||||
PilnyTomas marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||
* | ||||||||||||||
* SD Card | ESP32 | ||||||||||||||
* D2 12 | ||||||||||||||
* D3 13 | ||||||||||||||
* CMD 15 | ||||||||||||||
* VSS GND | ||||||||||||||
* VDD 3.3V | ||||||||||||||
* CLK 14 | ||||||||||||||
* VSS GND | ||||||||||||||
* D0 2 (add 1K pull up after flashing) | ||||||||||||||
* D1 4 | ||||||||||||||
* For more info see file README.md in this library or on URL: | ||||||||||||||
* https://github.com/espressif/arduino-esp32/tree/master/libraries/SD_MMC | ||||||||||||||
*/ | ||||||||||||||
|
||||||||||||||
#include "FS.h" | ||||||||||||||
#include "SD_MMC.h" | ||||||||||||||
|
||||||||||||||
// Default pins for ESP-S3 | ||||||||||||||
// Warning: ESP32-S3-WROOM-2 is using most of the default SD_MMC GPIOs (33-37) to interface with on-board OPI flash. | ||||||||||||||
// If the SD_MMC is initialized with default pins it will result in rebooting loop - please | ||||||||||||||
// reassign the pins elsewhere using the mentioned command `setPins`. | ||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can you please explain the white space changes? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The warning block was not aligned like other sketches I saw (in some sort of block). Although I just saw some that did just like you did. Feel free to keep it as it was. |
||||||||||||||
// Note: ESP32-S3-WROOM-1 does not have GPIO 33 and 34 broken out. | ||||||||||||||
// Note: The board SP32-S3-USB-OTG has predefined default pins and the following definitions with the setPins() call will not be compiled. | ||||||||||||||
PilnyTomas marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||
// Note: Pins in this definition block are ordered from top down in order in which they are on the full-sized SD card | ||||||||||||||
// from left to right when facing the pins down (when connected to a breadboard) | ||||||||||||||
|
||||||||||||||
#if defined(SOC_SDMMC_USE_GPIO_MATRIX) && not defined(BOARD_HAS_SDMMC) | ||||||||||||||
int d1 = 21; // SD pin 8 - add 10k Pullup to 3.3V if using 4-bit mode (use_1_bit_mode = false) | ||||||||||||||
int d0 = 47; // SD pin 7 - add 10k Pullup | ||||||||||||||
// GND pin - SD pin 6 | ||||||||||||||
int clk = 39; // SD pin 5 - add 10k Pullup | ||||||||||||||
// 3.3V pin - SD pin 4 | ||||||||||||||
// GND pin - SD pin 3 | ||||||||||||||
int cmd = 40; // SD pin 2 - add 10k Pullup | ||||||||||||||
int d3 = 41; // SD pin 1 - add 10k Pullup to card's pin even when using 1-bit mode | ||||||||||||||
int d2 = 42; // SD pin 9 - add 10k Pullup to 3.3V if using 4-bit mode (use_1_bit_mode = false) | ||||||||||||||
PilnyTomas marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||
#endif | ||||||||||||||
|
||||||||||||||
bool use_1_bit_mode = false; // Change the value to `true` to use 1-bit mode instead of the 4-bit mode | ||||||||||||||
|
||||||||||||||
void listDir(fs::FS &fs, const char * dirname, uint8_t levels){ | ||||||||||||||
Serial.printf("Listing directory: %s\n", dirname); | ||||||||||||||
|
||||||||||||||
|
@@ -172,8 +210,37 @@ void testFileIO(fs::FS &fs, const char * path){ | |||||||||||||
|
||||||||||||||
void setup(){ | ||||||||||||||
Serial.begin(115200); | ||||||||||||||
if(!SD_MMC.begin()){ | ||||||||||||||
Serial.println("Card Mount Failed"); | ||||||||||||||
while(!Serial) { delay(10); } | ||||||||||||||
Serial.println("SDMMC_Test.ino starting!"); | ||||||||||||||
|
||||||||||||||
// If you are using any other ESP32-S3 board than ESP32-S3-USB-OTG which has preset default pins, you will | ||||||||||||||
// need to specify the pins with the following example of SD_MMC.setPins() | ||||||||||||||
PilnyTomas marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||
// If you want to use only 1-bit mode, you can use the line with only one data pin (d0) begin changed. | ||||||||||||||
// Please note that ESP32 does not allow pin change and will fail unless you enter the same pin config as is the hardwired. | ||||||||||||||
PilnyTomas marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||
#if defined(SOC_SDMMC_USE_GPIO_MATRIX) && not defined(BOARD_HAS_SDMMC) | ||||||||||||||
//if(! SD_MMC.setPins(clk, cmd, d0)){ // 1-bit line version | ||||||||||||||
if(! SD_MMC.setPins(clk, cmd, d0, d1, d2, d3)){ // 4-bit line version | ||||||||||||||
Serial.println("Pin change failed!"); | ||||||||||||||
return; | ||||||||||||||
} | ||||||||||||||
#endif | ||||||||||||||
|
||||||||||||||
/* | ||||||||||||||
// This is waiting for implementation in peripheral manager (periman) | ||||||||||||||
if(use_1_bit_mode){ | ||||||||||||||
Serial.printf("Begin in 1-bit mode; pins: CLK=%d, CMD=%d, D0=%d\n", SD_MMC.getClkPin(), SD_MMC.getCmdPin(), SD_MMC.getD0Pin()); | ||||||||||||||
}else{ | ||||||||||||||
PilnyTomas marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||
Serial.printf("Begin in 4-bit mode; pins: CLK=%d, CMD=%d, D0=%d, D1=%d, D2=%d, D3=%d\n", SD_MMC.getClkPin(), SD_MMC.getCmdPin(), SD_MMC.getD0Pin(), SD_MMC.getD1Pin(), SD_MMC.getD2Pin(), SD_MMC.getD3Pin()); | ||||||||||||||
} | ||||||||||||||
*/ | ||||||||||||||
|
||||||||||||||
if(!SD_MMC.begin("/sdcard", use_1_bit_mode)){ | ||||||||||||||
Serial.println("Card Mount Failed."); | ||||||||||||||
Serial.println("Increase log level to see more info: Tools > Core Debug Level > Verbose"); | ||||||||||||||
Serial.println("Make sure that all data pins have 10 kOhm pull-up resistor"); | ||||||||||||||
PilnyTomas marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||
#ifdef SOC_SDMMC_USE_GPIO_MATRIX | ||||||||||||||
Serial.println("Make sure that when using generic ESP32-S3 board the pins are setup using SD_MMC.setPins()"); | ||||||||||||||
#endif | ||||||||||||||
return; | ||||||||||||||
} | ||||||||||||||
uint8_t cardType = SD_MMC.cardType(); | ||||||||||||||
|
Uh oh!
There was an error while loading. Please reload this page.