Estoy desarrollando una aplicación de medición con TI MSP430 y me gustaría escuchar algunas sugerencias sobre qué tipo de memoria puedo usar.
La idea es usarlo para iniciar sesión durante un tiempo determinado y luego descargar los datos a una PC cuando el dispositivo está conectado a través de USB. La estimación es contener hasta 5 MB de datos, cada muestra tiene alrededor de 25 bytes de datos.
¿Serviría un simple chip EEPROM o hay algo mejor por ahí?
He usado la serie AT45D de chips flash seriales. Tienen un búfer SRAM interno para configurar una página para borrar/programar. Interfaz SPI para leer datos de entrada y salida.
5MByte es una gran cantidad de datos para almacenar. Leerlo a través de USB implica que está utilizando una de las piezas nuevas con la interfaz de dispositivo USB incorporada. De lo contrario, utilizará un convertidor de USB a serie (FTDI o similar) y estará limitado a la serie asíncrona. tasas de datos para leer los datos.
¿Ha considerado conectar una tarjeta de memoria SD al MSP, almacenar los datos en eso y luego mover la tarjeta a la PC para leer los datos almacenados? No he escrito una interfaz para este dispositivo, pero hay muchas que sí.
La memoria flash en serie es superior a la EEPROM en esta aplicación. Atmel hace una gran alineación . Su elección dependerá en gran medida de dos cosas: (1) Su necesidad de editar/sectorizar sus registros en el micro y (2) Su disponibilidad de RAM en el MSP430.
Flash, a diferencia de EEPROM, solo se puede escribir de 1 a 0. Cambiar los datos de 0 a 1 requiere borrar una sección de la parte, que normalmente solo está disponible para páginas o bloques de datos. Deberá almacenar esta página en la memoria RAM, borrar la página, hacer su edición en la RAM y luego volver a escribirla si desea cambiar algo.
La serie AT45D, como ya se ha señalado, ofrece una serie de piezas que tienen memorias intermedias de RAM en el chip para facilitar este proceso sin usar RAM en el microcontrolador.
Al final, toda la serie es compatible con pines, así que solo coloque una huella 8-SOIC (150 mil) y luego puede cambiar las piezas si necesita otras opciones más adelante.
Sugeriría la serie AT25D ya que parece un poco más fácil de usar que la AT45D. Aunque es un poco más lento y no ofrece tantas opciones de transferencia de datos o los búferes SRAM. Tiene la ventaja de ser menos costoso y sigue siendo lo suficientemente rápido para la mayoría de las aplicaciones, como el registro de datos.
Si necesita 5 MB de datos, es poco probable que una EEPROM funcione, ya que normalmente vienen en paquetes de menos de 1 Mbit. Los chips flash de Atmel admiten hasta 64 Mbit u 8 MB.
[Esto es en respuesta a los comentarios que siguen a la respuesta de Ian].
Una tarjeta SD es solo un dispositivo SPI, por lo que no se necesita un chip/interfaz. Otros protocolos incluyen una interfaz de 2 hilos (como I2C) y una interfaz de 4 hilos (con un CRC complejo), pero SPI es el más utilizado.
Hay una nota de aplicación de tarjeta SD disponible para el MSP430 de TI aquí . Es breve, pero incluye código de ejemplo. Maneja la lectura y escritura en varios sectores de la tarjeta SD, que puede ser todo lo que desee si no va a conectarla a una PC. Mire también estas implementaciones de Foust (recomendado) o Evans de MSU.
Una vez que tenga las funciones básicas para leer y escribir un sector, puede abstraer un sistema de archivos personalizado simple a través de USB o usar una biblioteca de sistema de archivos existente. FatFS , EFSL o DOSF son opciones para este último. Si implementar todas las funciones requeridas parece demasiado difícil, recuerde que todas, excepto algunas, pueden ser/serán stubs.
Sin embargo, el sistema de archivos se abstraerá a través de su interfaz USB hasta cierto punto. Esto será más fácil si tiene una biblioteca de sistema de archivos real y su tarjeta está en un sistema de archivos legible, pero eso requiere trabajo. Si desea escribir su propio "Sistema de archivos" y ahorrar trabajo/tiempo/memoria para la implementación USB, puede hacer que su definición sea tan simple e inflexible como el registro 1 comienza en 0x0, el registro 2 comienza en 0x10 0000, el registro 3 en 0x20 0000 y registre 4 en 0x30 0000. Luego, puede enviar estos datos a través de USB.
La interfaz USB puede ser tan compleja como desee, desde una interfaz serial hasta un dispositivo de almacenamiento masivo.
Federico Ruso