Mega and CTE display shield, can't use SD reader

Hello,

I have an application where I would like to use an SD card to save and read some tiny data in files on SD card.
I use Arduino Mega2560 and CTE TFT LCD Shield v2.2 and 7" display.
Shield:

Display:

Display and touch works OK (some small issues I had, but this is not the question now).

I connect the pins for the SD reader to pins 50-53, but neither example sketch finds the card reader.
I follow this pinout to connect them:

Pins 31-34 on shield's connector, to pins 50-53 on Arduino's connector.

What am I doing wrong?

Your topic has been moved to a more suitable location on the forum. Installation and Troubleshooting is not for problems with (nor for advice on) your project.

Please post schematics. Else You will be drowning in guesses.
The first guess is that one or more of the pins used for the SD are double used.

there is not much to make schematics, it is a shield for MEGA.
you just put the shield in the socket of the MEGA.

Does the shield also contain the SD reader? I don't think so.

Post that SD example You tried.

You are not telling us about the SD card - which may be assumed to be an SPI device. Your display is apparently also an SPI device and should thus share the SPI bus with it.

I have been searching a lot for a detailed description, tutorial for CTE shield, but only these I found:

Version 1.0 pinout:

And v2.2 pinout:
LCD Mega Shield Pinout.pdf (18.5 KB)

And of course I have SD slot on the display:

I tried from Examples -> SD - > Cardinfo
Of course I changed the chipSelect to 53.
But I've made no other changes.

There are multiple CS pins on that board. So the question is which one you connected to 53.

I'm not familiar with the board so probably can't advise further.

You don't want to post the code for reading and I don't want hunt around to see it.

Sorry, didn't mean it

/*
  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
 ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
 ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
 ** CS - depends on your SD card shield or module.
 		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 <SPI.h>
#include <SD.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
// MKRZero SD: SDCARD_SS_PIN
const int chipSelect = 53;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  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?");
    while (1);
  } else {
    Serial.println("Wiring is correct and a card is present.");
  }

  // print the type of card
  Serial.println();
  Serial.print("Card 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");
    while (1);
  }

  Serial.print("Clusters:          ");
  Serial.println(volume.clusterCount());
  Serial.print("Blocks x Cluster:  ");
  Serial.println(volume.blocksPerCluster());

  Serial.print("Total Blocks:      ");
  Serial.println(volume.blocksPerCluster() * volume.clusterCount());
  Serial.println();

  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("Volume type is:    FAT");
  Serial.println(volume.fatType(), DEC);

  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  volumesize /= 2;                           // SD card blocks are always 512 bytes (2 blocks are 1KB)
  Serial.print("Volume size (Kb):  ");
  Serial.println(volumesize);
  Serial.print("Volume size (Mb):  ");
  volumesize /= 1024;
  Serial.println(volumesize);
  Serial.print("Volume size (Gb):  ");
  Serial.println((float)volumesize / 1024.0);

  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) {
}

There are multiple CS pins on that board. So the question is which one you connected to 53.

I've connected Arduino pin 53 to Shield's CN1 connector pin 34.
As the schematics shows above.

The test code looks like made for an UNO according to the comments. Pins 11, 12 and 13. You use a Mega. Likely the dot h files need to be changed accordingly.
I'm sure a Mega pin knowing member can tell more.

There isn't much more to tell. The only difference from Uno code is to use

  pinMode(53, OUTPUT);

instead of pin 10. This applies to Mega, not the peripheral, and (like pin 10) applies irrespective of whether or not it is actually being used, and I assume therefore applies even when it is used for CS. I imagine it applies in the latest IDE, and I don't suppose it will do any harm if it doesn't. I raise this latter only because I see no reference to pin 10 in the code above, even though it looks old.

My display shield requires a solder bridge to get the SD to work. This could be common practice.

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