SD card shield: corrupted file generated.

initialization is ok. but when i want to write some thing, serial monitor show me writing is done. but when i insert the card on pc i can't open the file. file is corropted. and lots of unknown file is also generated. help mee!!!!

/*
  SD card read/write
 
 This example shows how to read and write data to and from an SD card file 	
 The circuit:
 * SD card attached to SPI bus as follows:
 ** UNO:  MOSI - pin 11, MISO - pin 12, CLK - pin 13, CS - pin 4 (CS pin can be changed)
  and pin #10 (SS) must be an output
 ** Mega:  MOSI - pin 51, MISO - pin 50, CLK - pin 52, CS - pin 4 (CS pin can be changed)
  and pin #52 (SS) must be an output
 ** Leonardo: Connect to hardware SPI via the ICSP header

 
 created   Nov 2010  by David A. Mellis
 modified 9 Apr 2012  by Tom Igoe
 
 This example code is in the public domain.
 	 
 */
 
#include <SPI.h>
#include <SD.h>

File myFile;

// 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 = 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 Leonardo only
  }


  Serial.print("Initializing 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(SS, OUTPUT);
   
  if (!SD.begin(chipSelect)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
  
  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test.txt", FILE_WRITE);
  delay(1000);
  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    delay(1000);
	// close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}


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

1.JPG

i m using waveshare memory shield

images.jpg

This module was not designed to work with the 5V SPI signals on AVR arduinos. It only has resistors that pull pins to 3.3V which will not convert 5V SPI signals to 3.3V.

It has the same problems as the LC Studio module Can't write to SD card - files are corrupted - Storage - Arduino Forum.

See the attached schematic. This board even lacks a 5V to 3.3V regulator.

The example code is for an STM32 and this module is fine for that processor.

Micro SD Storage Board_SCH.pdf (90.5 KB)

now what should i do???
have to change the module?

The best solution is a module with IC level shifters.

You could modify the connections to your module Can't write to SD card - files are corrupted - #4 by fat16lib - Storage - Arduino Forum.

tnx... i will try it...

thanks fat16lib . i connect only the diods and it is working nicely. :slight_smile: