SD card module fails on 3.3V with XIAO ESP32S3

Hi,

I'm using a Seeed Studio XIAO ESP32S3 and trying to connect it to a microSD card adapter.

r/esp32 - SD card module fails on 3.3V with XIAO ESP32S3

r/esp32 - SD card module fails on 3.3V with XIAO ESP32S3|750x293.007769145394

I have two microSD adapters:

  • One that works with 5V – it works perfectly when connected to the 5V pin of the ESP32S3.
  • A new one that works with 3.3V – I connected it to the 3.3V pin of the ESP32S3, using the exact same wiring and code, but it doesn't work.

I get the following error:

[ 9746][E][sd_diskio.cpp:199] sdCommand(): Card Failed! cmd: 0x00 [ 9752][E][sd_diskio.cpp:806] sdcard_mount(): f_mount failed: (3) The physical drive cannot work [ 10061][E][sd_diskio.cpp:199] sdCommand(): Card Failed! cmd: 0x00

Do you know what could be causing this?

Link of the Micro SD reader that I am trying to use : Link

Thanks !

Their datasheets would good help to tell. Please post their links.

Hey, this is the one that previously worked with 5V supply : 5v Adapter

This is the one that I am trying to use : 3.3V not working

what Tools>Board have you selected?

I find it useful to run this program which lists the default SPI and I2C pins

/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp32-spi-communication-arduino/
  
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
  
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*/

//Find the default SPI pins for your board
//Make sure you have the right board selected in Tools > Boards
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  delay(3000);
  Serial.print("MOSI: ");
  Serial.println(MOSI);
  Serial.print("MISO: ");
  Serial.println(MISO);
  Serial.print("SCK: ");
  Serial.println(SCK);
  Serial.print("SS: ");
  Serial.println(SS);  
  Serial.print("SDA: ");
  Serial.println(SDA);  
  Serial.print("SCL: ");
  Serial.println(SCL);  
}

void loop() {
  // put your main code here, to run repeatedly:
}


e.g. using a ESP32S3 Zero Mini with Tools>Board selecting ESP32S3 Dev Module I get

MOSI: 11
MISO: 13
SCK: 12
SS: 10
SDA: 8
SCL: 9

enables you to check the IDE defaults agree with a pinout disgram

I am working on platformio, here is the board that I have selected :

[env:seeed_xiao_esp32s3]
platform = espressif32
board = seeed_xiao_esp32s3

I used your code and this is giving me the PIN of my ESP32. But when I am using my code, just to see if my card is recognized I have this error :

#include <Arduino.h>
#include <SPI.h>
#include <SD.h>


#define SD_CS 1  



void setup() {
    Serial.begin(115200);
    while (!Serial);

    SPI.begin();

    if (!SD.begin(SD_CS)) {
        Serial.println("❌ Card not detected !");
        while (1);
    }


}

void loop() {

}
[   953][E][sd_diskio.cpp:199] sdCommand(): Card Failed! cmd: 0x00
[   959][E][sd_diskio.cpp:806] sdcard_mount(): f_mount failed: (3) The physical drive cannot work
[  1268][E][sd_diskio.cpp:199] sdCommand(): Card Failed! cmd: 0x00
❌ Card not detected !

I see from post 1 the 5V SD reader works OK (mat damage the 3.3V logic of the XIAO)
it is the 3.3V which fails
possibility the XIAO 3.3V power supply does not have the capacity to power the SD reader?
have any other ESP32 series microcontrollers you could test it with?

I used a voltmeter, there is power supply on the SD reader, and also I used a power module 3.3/5v but none of this is working :smiling_face_with_tear:

RESOLVED, it was just that I hadn't done the soldering :smiley: