Pages: [1]   Go Down
Author Topic: SD formatting problem  (Read 4674 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 104
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dear community!

Ive got a adafruit sd module and would like to experiment with it.
Unfortunately I seem to dont get it working... smiley-sad

The wirering is as follows:


I get a message that the card is present so I think the wiring should be correct (I hope).

But I get a a error message saying that the fat partition could not be found.
I formatted the card many times with windows and the sd formatter with 16 as well
as fat32. But still getting this message:
Code:
Initializing SD card...Wiring is correct and a card is present.

Card type: SD2
Could not find FAT16/FAT32 partition.
Make sure you've formatted the card

This is what I get from the SD formater software:

Code:
---------------------------
SDFormatter
---------------------------
Drive Format complete !
QUICK FORMAT
("Flash Erase" operation has been canceled because this device didn't support it.)

 Volume Information
 - File system : FAT
 - Total space = 1.89 GB (2,039,218,176 Bytes)    
 - Cluster size = 32768 Bytes
---------------------------
OK  
---------------------------

Im using the sd wrapper from ladyada (sdfatlib) and running the sdinfo sketch from the
expamples:

Code:
/*
  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

 
 created  28 Mar 2011
 by Limor Fried
 */
 // include the SD library:
#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
const int chipSelect = 10;    

void setup()
{
  Serial.begin(9600);
  Serial.print("\nInitializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output
  // or the SD library functions will not work.
  pinMode(10, OUTPUT);     // change this to 53 on a mega


  // 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 is 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
  volumesize *= 512;                            // SD card blocks are always 512 bytes
  Serial.print("Volume size (bytes): ");
  Serial.println(volumesize);
  Serial.print("Volume size (Kbytes): ");
  volumesize /= 1024;
  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 could be wrong?
Thanks for help!! smiley
« Last Edit: July 20, 2011, 03:01:55 pm by asuryan » Logged

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 227
Posts: 14024
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

And if you format the SDcard explicitely on FAT32 (e.g. with your windows PC)?
Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Offline Offline
Full Member
***
Karma: 0
Posts: 104
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

thanks for reply!

I tried that too allready. Still not working... smiley-sad The card is from my old
mobile so maybe the card is too old? Could that be? Should I get a new one?
Hope the sdmodule is not broken... smiley-sad
« Last Edit: July 20, 2011, 03:41:45 pm by asuryan » Logged

0
Offline Offline
Edison Member
*
Karma: 67
Posts: 1673
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

This card is old since it doesn't support modern erase commands.  It should work but some old microSD cards didn't support SPI very well.

Don't format this card FAT32, only cards larger than 2GB should be formatted FAT32.  Don't use the Windows format utility. 

From the SD Assoication:
Quote
Use the SD Formatter instead of formatting utilities provided with operating systems that format various types of storage media. Using generic formatting utilities may result in less than optimal performance for your memory cards.

SD Formatter is here http://www.sdcard.org/consumers/formatter_3/

The SdFat formatter sketch also complies with the SD formatting standard.

Please run the SdInfo example from the latest version of SdFat.  It provides more information than the Adafruit CardInfo program.  Please post the output.

SdFat is here http://code.google.com/p/sdfatlib/downloads/list.
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 104
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I get this data from sdinfo

Code:
type any character to start

init time: 4 ms

Card type: SD2
readCID failed
SD errorCode: 0XD
SD errorData: 0XD

and this info from quickstart

Code:
Enter the chip select pin number: 10

Card successfully initialized.

Can't determine the card size.
Try another SD card or reduce the SPI bus speed.
The current SPI speed is: 4.00 MHz
Edit spiSpeed in this sketch to change it.

Restarting

btw... this forum is very very fast... thanks for that smiley-wink
« Last Edit: July 20, 2011, 04:04:10 pm by asuryan » Logged

0
Offline Offline
Edison Member
*
Karma: 67
Posts: 1673
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wow!  This card is strange.  If possible try another card to make sure it is not some other hardware problem.
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 104
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok I changed the SPI speed and voila:

Code:
Enter the chip select pin number: 10

Card successfully initialized.

Card size: 2042 MB (MB = 1000000 bytes)

Volume is FAT16, Cluster size (bytes): 32768

Files found (name date time size):

Success!  Type any character to restart.


But I think that would make problems later on... Is the card too old should
I get a new one?
Logged

0
Offline Offline
Edison Member
*
Karma: 67
Posts: 1673
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I think it might be your breadboard setup.  Some microSD cards can't cope with wires on breadboards.

I worry that a new card may also have problems at higher speeds.
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 104
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hm ok I see. Thanks!

For my purposes until now quarter speed is absolutely ok. Just testing.
But when speed is needed how should I build a prototype or especially build
a final project? Can some modern cards cope with this setup? Any experience there?

I have a project in my mind where I would like to plan camera positions on the
desktop and transfer this positiondata to a motion control rig with dslr attached
for stopmotion animation. Since the atmega has to read only one position every frame and
run the steppers only once a few minutes to the new position speed isnt really neccesary.
Logged

0
Offline Offline
Edison Member
*
Karma: 67
Posts: 1673
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I suspect a new card would help.

Others could summarize good PCB layout better than I can.
Logged

Pages: [1]   Go Up
Jump to: