Este tipo de memorias se utilizan ahora en los principales dispositivos electrónicos del mercado, como cámaras, smartphones, videocámaras, etc… y han sustituido a otros modelos anteriores. Las principales razones de su uso son el pequeño tamaño, la velocidad de escritura / lectura (hasta 32 MB / s) y los costos, ahora muy bajos.
Son memorias no volátiles, lo que significa que no requieren de una fuente de alimentación para poder mantener los datos guardados (como los discos duros de las computadoras).
En realidad, el microcontrolador ATMEGA328 tiene tres tipos de memoria en su interior:
Una memoria flash ISP de 32 KB con capacidad de lectura / escritura
Una memoria EEPROM de 1 KB
Una memoria SRAM de 2KB.
Pero ninguno de los tres es al mismo tiempo no volátil, grande y con lecturas / escrituras “infinitas”. Por esta razón, a veces es necesario tener un lector de microSD para poder usar dicha memoria para guardar y leer los datos que se necesitan para el programa que se carga en el Arduino.
El diagrama de cableado del módulo es muy sencillo ya que se limita a conectar los pines de la tarjeta de memoria al conector. En el mercado existen módulos más complejos, que también montan reguladores de voltaje, ya que la tarjeta micro SD requiere un voltaje de alimentación de 3.3V, también existen circuitos de cambio de nivel ya que la tarjeta funciona con niveles de 3 , 3V.
Sin embargo, de las pruebas realizadas se encontró que no hay problemas, solo use la fuente de alimentación de 3.3V proporcionada por el Arduino.
La comunicación entre el microcontrolador y la tarjeta SD utiliza el protocolo SPI (Serial Peripheral Interface) que es un sistema de comunicación entre un microcontrolador y otros circuitos integrados o entre múltiples microcontroladores. Es un bus de comunicación estándar diseñado por Motorola y desarrollado, en una variante, también por National Semiconductor con el nombre de bus MicrowireTM. La transmisión tiene lugar entre un dispositivo llamado maestro y uno o más esclavos (literalmente del maestro y esclavo en inglés). El maestro controla el bus, emite la señal del reloj, decide cuándo iniciar y finalizar la comunicación.
Se basa en 4 señales:
SCK: Reloj serial (emitido por el maestro)
MISO: entrada de datos en serie, entrada maestra salida esclava (entrada para el maestro y salida para el esclavo)
MOSI: Salida de datos en serie, Salida maestra Entrada esclava (salida desde maestra)
CS: Chip Select, Slave Select, emitido por el maestro para elegir con qué dispositivo esclavo quiere comunicarse
NOTA: Chip Select (CS) no es esencial en todas las aplicaciones.
Para el uso de Arduino, esta comunicación se realiza en los pines digitales 11 ( MOSI ), 12 ( MIS O) y 13 ( CLK ) (en la mayoría de las placas Arduino) o 50, 51 y 52 (Arduino Mega). Además, se debe utilizar otro pin para seleccionar la tarjeta CS. Puede ser el pin 10 ( CS ) del hardware SS (en la mayoría de las placas Arduino) o el pin 53 (en el Mega), u otro pin especificado en la llamada de biblioteca a SD.begin () que veremos más adelante.