«

»

Oct 04

Utilizar una SD como unidad de almacenamiento masivo para PIC. Primeros pasos

Tarjeta de memoria SD

El espacio disponible para almacenar datos en un PIC es muy limitado, en los modelos más grandes existe algo de memoria RAM y en casi todos ellos disponemos de una pequeña cantidad de memoria EEPROM, pero si queremos almacenar grandes cantidades de datos, como históricos de temperaturas, o guardar imágenes o textos complejos, tenemos que recurrir a algún elemento externo.

Nada mejor para almacenar datos que utilizar un elemento robusto, ligero, barato y compatible con otros sistemas como una tarjeta SD. Ademas, la tarjeta de memoria trabaja en rango de tensiones entre 2.7 y 3.6V y se puede manejar utilizando un protocolo SPI, que está bien soportado por los PIC.

Si no pretendemos leer los datos con un ordenador, ni respetar ningún estándar, podemos hacer algo tan sencillo como inicializar la tarjeta y escribir bloques de datos en la dirección de memoria que queramos, como si se tratase de una eeprom. Si nos queremos complicar un poquito más la vida existe mucha información en la red para implementar el sistema de ficheros FAT16 que  es el que se usa habitualmente en las memorias de menos de 2GB.

Veremos que no son muchos los requisitos de “hardware” que necesitaremos para empezar a trabajar con las memorias SD, aun así es importante tenerlo todo claro antes de empezar.

  • No hay duda de que necesitamos al menos una SD para hacer las pruebas. Vale cualquier cosa que tengamos, ya que para un PIC hasta una de 16MB es una enormidad. Si tenemos un MMC también vale (seguramente tendrás que adaptar algo en el programa, ya que yo he usado sólo SDs)
  • Lo siguiente es encontrar un zócalo para conectar la tarjeta. Hay varias opciones:
    • Buscar “SD Card socket” en ebay o tiendas de electrónica online por poco más de 1€. Algunos tienen adaptación de tensión de las señales y la alimentación de 5v a los 3.3V requeridos por la tarjeta.
    • Utilizar un conector viejo de una disquetera de 5 1/4″, que encaja a la perfección con las medidas de la tarjeta. Es una buena solución casera para hacer pruebas cuando no queremos esperar 1 mes por un envío desde china. http://uanr.com/sdfloppy/
    • Con tiras de pines y soldando un poquito: http://www.instructables.com/id/Cheap-DIY-SD-card-breadboard-socket/
    • Soldar directamente la tarjeta SD al circuito (si no la vamos a sacar nunca) o soldar un adaptador de SD a microSD y utilizar una microSD como tarjeta de memoria extraíble.

 Conector FD 5 1/4 con una SD Soldar un conector para una SD a partir de tiras de pines

  • Si trabajamos con 5V, necesitaremos un circuito para adaptar las tensiones del PIC a las de la tarjeta, en el caso de que el socket que tengamos no lo lleve ya integrado. Yo voy a trabajar directamente con 3.3V y de esta manera me ahorro la interface.
  • Tan importante como lo anterior es elegir adecuadamente el micro para esta aplicación. Si sólo vamos a usar la tarjeta con el PIC como medio de almacenamiento masivo, pero no queremos acceder ni crear un sistema de ficheros, nos sirve cualquier PIC, preferiblemente con SPI hardware. Yo por ejemplo he hecho pruebas con un 16F886 accediendo a bloques de 16 bytes cada vez, que es lo que nos permite la memoria disponible. Por otro lado, si queremos tener un acceso completo al sistema de archivos necesitamos más memoria RAM, ya que se hace más sencillo todo si podemos leer bloques completos de datos (de 512 bytes) y conservarlos en memoria. Por esto yo he elegido para hacer la presente guía el procesador más potente que tenía por casa un DSPIC 30F4012, que tiene 2K de RAM, SPI hardware, y sobrada potencia para hacer lo que le pidamos. Siguiendo los pasos descritos en la entrada: “Realizar una placa entrenadora para PIC sencilla“. He realizado en 15 minutos una placa con lo básico para las pruebas.
Paso 1 en la construcción de placa entrenadora 30F4012 Paso 2 en la construcción de placa entrenadora 30F4012 Paso 3 en la construcción de placa entrenadora 30F4012
Paso 4 en la construcción de placa entrenadora 30F4012 Paso 5 en la construcción de placa entrenadora 30F4012
  • Por último viene bien tener algún tipo de enlace serie para la depuración, por si nos encontramos problemas durante la programación. Yo directamente he conectado un módulo  Bluetooth HC-06 a las patas RX y TX del micro y utilizo un emulador de terminal para ver que está pasando durante la ejecución del programa.

Con esto terminamos el primer capítulo de la serie. En la siguiente entrega, veremos como hay que programar el micro para poder inicializar la tarjeta y empezar a leer y escribir nuestros primeros datos.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies