SD.begin()

De ArduWiki
Saltar a: navegación, buscar

Descripción

Intenta inicializar la tarjeta SD al modo SPI, para así obtener de esta la información necesaria para empezar a usarla.

Aunque llamar esta función cuando la tarjeta ya había sido inicializada no la perjudica (y prácticamente no tendría efecto alguno en el programa), de todas formas sería un desperdicio de tiempo ya que ejecutar esta función puede tardar hasta un segundo. Donde sí valdría la pena sería al dar soporte de remoción "en caliente", porque cada vez que una tarjeta SD pierda energía, hay que pasar por este proceso al reinsertarse.

Sintaxis

SD.begin([velocidad, ]pinCS);

Parametros

velocidad
frecuencia del reloj SPI en Hertz (unsigned long). Si excede el máximo soportado por el microcontrolador, dicho máximo se utilizará en su lugar. El valor máximo absoluto es de 20000000 (20 MHz).
pinCS
el número del pin utilizado para la línea "Chip Select" (o "Slave Select"/SS) de la tarjeta (byte).

Retorna

true si la tarjeta pudo ser inicializada con éxito, false en caso contrario (bool).

Comentarios

Este proceso de inicialización sigue tres pasos:

  • Poner la tarjeta en modo SPI mediante el envío de cierto comando una cantidad determinada de veces. Si no se da la respuesta esperada en alguno de los intentos, el proceso falla inmediatamente. Esta etapa esencialmente verifica el hardware (lo físico); en otras palabras, puede fallar por mala alimentación (de la tarjeta), mala conexión, o incluso por tarjeta defectuosa o que de pleno no soporta SPI.
  • Leer la tabla de particiones (también llamados "volúmenes") para así encontrar alguna con el sistema de archivos FAT (16 o 32). Si se falla en esta etapa, es posible que la tarjeta no esté formateada al sistema FAT.
  • Abrir el directorio raíz una vez encontrada la partición FAT. Si falla, podría ser problema de hardware (ej.: desconexión de la tarjeta antes de llegar a esta etapa) o el sistema de archivos está dañado (reparable mediante formateo o el comando chkdsk en Windows).

En el momento que alguno fracase, es dónde la función retorna false. Ya que el dato de retorno no es muy específico para diagnosticar posibles problemas con la tarjeta, se recomienda subir y ejecutar el ejemplo CardInfo para dicha tarea. Ese programa imprime (en el monitor serial) un mensaje de error dependiendo de en cuál de las dos primeras etapas ha fallado; si llega a imprimir una lista del contenido (archivos y carpetas) de la tarjeta, significa que todo está en orden.

Advertencia

Este método solo estará disponible luego de incluir la libreria SD.

Ejemplo

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

void setup() {
   Serial.begin(9600);

   if (!SD.begin(4)){
      Serial.println("Fallo en la tarjeta");
   }else{
      Serial.println("Tarjeta iniciada");
   }
   //Hacer algo con la SD
   SD.end()
   Serial.println("Puedes sacar la tarjeta con seguridad.");
}

void loop(){
   //Nada
}

Vea también


Referencias externas