SD card mudule with moso

I need to use an micro sd card module with teensy4.0, my micro sd card module have gnd vcc moso mosi sck cs. How i can work with that ? I trying to run this code But I got on this error. any help please?
This is my connection:

MicroSD card Adapter -> Teensy4.0
CS -> PIN 10
SDK -> PIN 13
MOSI -> PIN 11
MOSO -> PIN 12
VCC -> 5v
GND -> GND

Initializing SD card...initialization failed. Things to check:

  • is a card inserted?
  • is your wiring correct?
  • did you change the chipSelect pin to match your shield or module?

/*
  SD card test 
   
 This example shows how use the utility libraries on which the'
 SD library is based in order to get info about your SD card.
 Very useful for testing a card when you're not sure whether its working or not.
 	
 The circuit:
  * SD card attached to SPI bus as follows:
 ** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila, pin 7 on Teensy with audio board
 ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
 ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila, pin 14 on Teensy with audio board
 ** CS - depends on your SD card shield or module - pin 10 on Teensy with audio board
 		Pin 4 used here for consistency with other Arduino examples

 
 created  28 Mar 2011
 by Limor Fried 
 modified 9 Apr 2012
 by Tom Igoe
 */
 // include the SD library:
#include <SD.h>
#include <SPI.h>

// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;

// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
// Teensy audio board: pin 10
// Teensy 3.5 & 3.6 & 4.1 on-board: BUILTIN_SDCARD
// Wiz820+SD board: pin 4
// Teensy 2.0: pin 0
// Teensy++ 2.0: pin 20
const int chipSelect = 10;

void setup()
{
  //UNCOMMENT THESE TWO LINES FOR TEENSY AUDIO BOARD:
  //SPI.setMOSI(7);  // Audio shield has MOSI on pin 7
  //SPI.setSCK(14);  // Audio shield has SCK on pin 14
  
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect.
  }


  Serial.print("\nInitializing SD card...");


  // we'll use the initialization code from the utility libraries
  // since we're just testing if the card is working!
  if (!card.init(SPI_HALF_SPEED, chipSelect)) {
    Serial.println("initialization failed. Things to check:");
    Serial.println("* is a card inserted?");
    Serial.println("* is your wiring correct?");
    Serial.println("* did you change the chipSelect pin to match your shield or module?");
    return;
  } else {
   Serial.println("Wiring is correct and a card is present.");
  }

  // print the type of card
  Serial.print("\nCard type: ");
  switch(card.type()) {
    case SD_CARD_TYPE_SD1:
      Serial.println("SD1");
      break;
    case SD_CARD_TYPE_SD2:
      Serial.println("SD2");
      break;
    case SD_CARD_TYPE_SDHC:
      Serial.println("SDHC");
      break;
    default:
      Serial.println("Unknown");
  }

  // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
  if (!volume.init(card)) {
    Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
    return;
  }


  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("\nVolume type is FAT");
  Serial.println(volume.fatType(), DEC);
  Serial.println();
  
  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  if (volumesize < 8388608ul) {
    Serial.print("Volume size (bytes): ");
    Serial.println(volumesize * 512);        // SD card blocks are always 512 bytes
  }
  Serial.print("Volume size (Kbytes): ");
  volumesize /= 2;
  Serial.println(volumesize);
  Serial.print("Volume size (Mbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);

  
  //Serial.println("\nFiles found on the card (name, date and size in bytes): ");
  //root.openRoot(volume);
  
  // list all files in the card with date and size
  //root.ls(LS_R | LS_DATE | LS_SIZE);
}


void loop(void) {
  
}

What is the sd card module you are using? Also, can you double check you have 5V because the pinout diagram says it's Vin. Maybe you should use the 3.3V as Vcc for the module instead?

If the SD card module has a 5V pin that suggests its the type of module designed for use on 5V Arduinos.

There are different SD card modules for use on 3.3V logic devices like the teensy 4.0.

I used VCC -> 3V and the same problem. this is my sd card
2

This is the sd card
2

Any HELP :frowning:

Initializing SD card...initialization failed. Things to check:

  • is a card inserted?
  • is your wiring correct?
  • did you change the chipSelect pin to match your shield or module?

If you double checked all that, then maybe the card reader is broken.
What micro SD card are you using?

As @srnet pointed out back in post #3, there are different SD card breakout modules. The SD card module you are using is designed for 5V systems like an UNO and includes a 3.3V regulator for the SD card and likely implements the flawed level shifting of the MISO signal. I'll hazard a guess that the MOSO label on the silkscreen is a cut & paste error by the designer/copier and should read MISO, as there is no such signal as MOSO on an SPI bus.

Your Teensy is a 3.3v device so you should really be looking for a board like this without additional electronics:
SD Adapter - Bare

I used the same SD card with esp32 cam and it works without any problem. I do not know what happen with Teensy4.0 :frowning:

The SD card holder on the ESP32CAM is a direct 3.3V logic only connection, which is what the SD card needs. There are no logic level conversion stuff used to mess things up.

In addition the ESP32CAM drives the SD card in MMC mode which is not the same as the SPI mode on the teensy.

I used the same micro sd card but link it with esp32 and it works without any problems, really I do not know what happen with Teensy4.0 !

esp32 with SD card

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.