Audio Shield Rev D not recognized the SD Card

janla

New member
Hello together,

I have a problem with the Audio Shield Rev D! I connected it with the Teensy 4.0, the pins are all correct connected (I tried it with a multimeter).
I already tried the SDCardTest and I got the message "SD card is not connected or unusable :-(" and also tried listfiles from the examples --> message "initialization failed!".

I used already different SD cards (SanDisk Ultra 16GB and also a normal micro SD car with 2GB.

Does anyone have any idea what the reason could be that the SD card is not recognized?

Thank you!
 
No problem.
Attached the pictures:
PXL_20220726_083956550.jpgPXL_20220726_083939947.jpg

I tried with following code:
Code:
/*
  SD card basic directory list example
 
 This example shows how to create and destroy an SD card file 	
 The circuit:
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11, pin 7 on Teensy with audio board
 ** MISO - pin 12
 ** CLK - pin 13, pin 14 on Teensy with audio board
 ** CS - pin 4, pin 10 on Teensy with audio board
 
 created   Nov 2010
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe
 
 This example code is in the public domain.
 	 
 */
#include <SD.h>

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

void setup()
{
  //Uncomment these lines for Teensy 3.x Audio Shield (Rev C)
  //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("Initializing SD card...");

  if (!SD.begin(chipSelect)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  File root = SD.open("/");
  
  printDirectory(root, 0);
  
  Serial.println("done!");
}

void loop()
{
  // nothing happens after setup finishes.
}

void printDirectory(File dir, int numSpaces) {
   while(true) {
     File entry = dir.openNextFile();
     if (! entry) {
       //Serial.println("** no more files **");
       break;
     }
     printSpaces(numSpaces);
     Serial.print(entry.name());
     if (entry.isDirectory()) {
       Serial.println("/");
       printDirectory(entry, numSpaces+2);
     } else {
       // files have sizes, directories do not
       unsigned int n = log10(entry.size());
       if (n > 10) n = 10;
       printSpaces(50 - numSpaces - strlen(entry.name()) - n);
       Serial.print("  ");
       Serial.print(entry.size(), DEC);
       DateTimeFields datetime;
       if (entry.getModifyTime(datetime)) {
         printSpaces(4);
         printTime(datetime);
       }
       Serial.println();
     }
     entry.close();
   }
}

void printSpaces(int num) {
  for (int i=0; i < num; i++) {
    Serial.print(" ");
  }
}

void printTime(const DateTimeFields tm) {
  const char *months[12] = {
    "January","February","March","April","May","June",
    "July","August","September","October","November","December"
  };
  if (tm.hour < 10) Serial.print('0');
  Serial.print(tm.hour);
  Serial.print(':');
  if (tm.min < 10) Serial.print('0');
  Serial.print(tm.min);
  Serial.print("  ");
  Serial.print(tm.mon < 12 ? months[tm.mon] : "???");
  Serial.print(" ");
  Serial.print(tm.mday);
  Serial.print(", ");
  Serial.print(tm.year + 1900);
}
 
Last edited by a moderator:
Code:
/*
SD card basic directory list example

This example shows how to create and destroy an SD card file
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11, pin 7 on Teensy with audio board
** MISO - pin 12
** CLK - pin 13, pin 14 on Teensy with audio board
** CS - pin 4, pin 10 on Teensy with audio board

created Nov 2010
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe

This example code is in the public domain.

*/
#include <SD.h>

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

void setup()
{
	//Uncomment these lines for Teensy 3.x Audio Shield (Rev C)
	//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("Initializing SD card...");

	if (!SD.begin(chipSelect)) {
		Serial.println("initialization failed!");
		return;
	}
	Serial.println("initialization done.");

	File root = SD.open("/");

	printDirectory(root, 0);

	Serial.println("done!");
}

void loop()
{
	// nothing happens after setup finishes.
}

void printDirectory(File dir, int numSpaces) {
	while (true) {
		File entry = dir.openNextFile();
		if (!entry) {
			//Serial.println("** no more files **");
			break;
		}
		printSpaces(numSpaces);
		Serial.print(entry.name());
		if (entry.isDirectory()) {
			Serial.println("/");
			printDirectory(entry, numSpaces + 2);
		}
		else {
			// files have sizes, directories do not
			unsigned int n = log10(entry.size());
			if (n > 10) n = 10;
			printSpaces(50 - numSpaces - strlen(entry.name()) - n);
			Serial.print(" ");
			Serial.print(entry.size(), DEC);
			DateTimeFields datetime;
			if (entry.getModifyTime(datetime)) {
				printSpaces(4);
				printTime(datetime);
			}
			Serial.println();
		}
		entry.close();
	}
}

void printSpaces(int num) {
	for (int i = 0; i < num; i++) {
		Serial.print(" ");
	}
}

void printTime(const DateTimeFields tm) {
	const char* months[12] = {
	"January","February","March","April","May","Ju ne",
	"July","August","September","October","November"," December"
	};
	if (tm.hour < 10) Serial.print('0');
	Serial.print(tm.hour);
	Serial.print(':');
	if (tm.min < 10) Serial.print('0');
	Serial.print(tm.min);
	Serial.print(" ");
	Serial.print(tm.mon < 12 ? months[tm.mon] : "???");
	Serial.print(" ");
	Serial.print(tm.mday);
	Serial.print(", ");
	Serial.print(tm.year + 1900);
}
In future could you enclose your posted code between code tags using the # button, I think you will agree that it makes your code much easier to understand. This will make it more likely that someone will be able to help you.
Unfortunately I have no experience using the Audio card so I do not fall into that group.

EDIT: Those look like very poor solder joints on the T4.0 board. I would re-flow those joints and get the solder flowing properly onto the T4.0 board, not just the pins poking through.
 
Also all of the normal questions, like: What are you building this on/using?

That is what version of Arduino and what version of Teensyduino? And is the SD library coming from Teensyduino?
Earlier versions of Teensduino < 1.56 maybe 1.55? used a simple version which for example did not support exFat volumes. ''

Have you checked your SD cards on a PC to make sure they work OK?

As mentioned, I would touch up the solder joints especially pins 10-13 as they are ones used for SD.

If it were me, I would also probably edit the SD library begin method and add some debug prints, which would show if it failed as it did not see the drive or if it failed to initialize the volume.
 
Back
Top