Problemas con Mega y Módulo SD

Hola Buenas buenas, estoy en un proyecto y no puedo hacer funcionar el módulo de microSD en un Mega, eh intentado con varios código, hasta con los ejemplos de la librería SD como por ejemplo cardinfo.
Tengo que modificar algo del código de la librería? o debería funcionar, los pines que utilizo son:
MISO: 50
MOSI: 51
SCK: 52
SS/CS: 53
el modulo es un genérico creo.

Muchas Gracias por todo. Si no corresponde que consulte en este lugar les pido disculpa y donde tengo que consultar.

Saludos

En principio los pines que estas usando son correctos.
Que código es el que has empleado? Postealo debidamente como dicen las normas.

Copio el código que estoy utilizando

#include <SPI.h>    
#include <SD.h> 

#define SSpin 53 

File archivo; 

void setup() {

  Serial.begin(9600);       
  Serial.println("Inicializando tarjeta ...");  
  if (!SD.begin(SSpin)) {     
    Serial.println("fallo en inicializacion !");
    return;        
  }
  
  Serial.println("inicializacion correcta");  
  archivo = SD.open("prueba.txt", FILE_WRITE); 

  if (archivo) {
    archivo.println("Probando 1, 2, 3");  
    Serial.println("Escribiendo en archivo prueba.txt..."); 
    archivo.close();    
    Serial.println("escritura correcta"); 
  } else {
    Serial.println("error en apertura de prueba.txt");  
  }

  archivo = SD.open("prueba.txt");    
  if (archivo) {
    Serial.println("Contenido de prueba.txt:"); 
    while (archivo.available()) {   
      Serial.write(archivo.read());     
    }
    archivo.close();       
  } else {
    Serial.println("error en la apertura de prueba.txt");
  }
}

void loop() {    
  
}

Con qué lo alimentas 5 o 3.3V?

Lo alimento con 5v, pero tambien he intentado con 3,3v y el mismo problema

¿Pero te da algún error en compilacion o en tiempo de ejecuccion? y cuales son los errores que te salen, el modulo tiene pinta de ser de 5V porque lleva un regulador.

Hola tresvdoble, el error es en ejecución, el error es que falla la iniciación del módulo. Si el módulo tienen el regulador, lo alimento con 5v.

¿Podria ser que aunque el modulo SD se alimente a 5V los pines MISO, MOSI, SCK y SS/CS trabajen a 3'3V?

Éste módulo tambien tiene el chip para convertir las señales de 5 a 3,3 y viseversa

La MicroSD ¿está formateada?

SI, es una microSD de 8 Gb formateada con el software SD Card Formatter con el formato FAT32

Pues ya solo se me ocurre es que el modulo esté mal, porque el código me parece que está bien y si no pasa de:

void setup() {

  Serial.begin(9600);       
  Serial.println("Inicializando tarjeta ...");  
  if (!SD.begin(SSpin)) {     
    Serial.println("fallo en inicializacion !");
    return;        
  }

solo queda un posible problema de conexionado o mal contacto.

Si es la que estoy pensando, buscaba una mirada de afuera y con ojo crítico capaz que estaba fallando en algo. Gracias, voy a adquirir otro módulo a ver qué pasa y les comento.
Nuevamente Gracias

Probé simular tu código en wokwi y funciona correctamente.
Así que si el código está correcto y las conexiones también, seguramente el problema es el adaptador defectuoso.

Saludos

Prueba bajando la velocidad SPI a 1/4 a ver como era..

After these modifications any of the following methods can be used to start the SD object.

SD.begin();
SD.begin(cspin);
SD.begin(cspin, spiSpeed);

spiSpeed (es opcional) puede ser SPI_FULL_SPEED, SPI_HALF_SPEED o SPI_QUARTER_SPEED al como es soportada por la clase SD2Card class.
Prueba cambiandolas.

hola gente!!! tengo el mismo problema q fgmtj, uso el mismo sketch, lo q hice hasta ahora fue:

1)probarla (placa micro sd) en un arduino uno con una microsd de 2 gb y anduvo a la primera sin problemas, la paso al mega 2560 genérico y salta el error de inicialización fallida, probe lo q dijo ricardo de cambiar la velocidad y nada.
comando q use : SPI.beginTransaction (SPISettings (2000000, MSBFIRST, SPI_MODE0));

2)Lo q hice es armar otro sketch, poniendo del pin 50 al 53 en alto la salida (pensando lo peor q se habían quemado) al testearlo todas las salidas me dan 4.96 v.

no se me ocurre nada mas, agradecería cualquier ayuda.

Fgmtj yo tuve un problema similar , lo intente con una memoria de 8 Gb y nada , pero con una memoria de 4 Gb e inferior me funciono perfectamente.

Creo que esto es correcto. Si no recuerdo mal FAT32, en su forma nativa, tiene limitación de 4gb y creo que ficheros de 2.1gb o algo así.

Yo para pruebas SD siempre uso una de 1gb o 2gb...

Según se extrae de la página https://create.arduino.cc/projecthub/electropeak/sd-card-module-with-arduino-how-to-read-write-data-37f390

Note These modules can not handle high-capacity memory cards. Usually, the maximum identifiable capacity of these modules is 2 GB for SD cards, and 16 GB for micro SD cards.

Que traducido más o menos dice:

Nota Estos módulos no pueden manejar tarjetas de memoria de alta capacidad. Normalmente el máximo de capacidad que pueden identificar estos módulos son de 2GB para tarjetas SD y de 16GB para tarjetas Micro SD.

Hay que tener en cuenta también qué tipo de tarjeta es, de qué velocidad etc. puede que eso de también ruido...
Saludos

1 Like

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