Sugerencias de memoria para MSP430

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í?

Parece que tendrá el dispositivo encendido la mayor parte del tiempo que tenga datos válidos. Entonces, ¿no es una SRAM con respaldo de batería más apropiada que una EEPROM (o mejor, Flash)?

Respuestas (5)

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í.

Sí, voy a usar una de las partes con USB integrado. Lo ideal sería usar el protocolo MSC, pero eso agrega mucha complejidad a mi proyecto. Probablemente me conforme con las tasas de transferencia de datos de HID. Pensé en las tarjetas SD, pero eso agrega complejidades adicionales al gabinete, ya que debe ser a prueba de salpicaduras de agua.
Sugeriría esta ruta, porque las tarjetas SD le darán la mayor cantidad de espacio de almacenamiento. Dices 5 MB ahora, pero si quieres más más adelante, estás superando los límites de la memoria flash en serie (y estás muy por encima de los límites de la EEPROM). Si la impermeabilización es un problema (y tiene una opción USB adecuada, que parece ser el caso), puede leer su tarjeta SD a través de USB y colocarla dentro de la carcasa de forma permanente. He visto algunos diseños que soldaron la tarjeta SD a la placa (Nota: esto funcionó, pero no lo recomiendo).
Lo tengo, tiene sentido. Consideraré esa opción. Gracias
¿Hay un chip especializado que se encargue de la interfaz SD e implemente el sistema de archivos o aún tendría que implementar un sistema de archivos y la clase MSC usando el MSP430?
@Padu: sentí que esto necesitaba un poco más de espacio y formato que un comentario, así que agregué mi respuesta como respuesta.
@Ian: agregué una respuesta sobre la interfaz SD, siéntase libre de incorporarla o sus enlaces en su respuesta.

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.

Estoy de acuerdo con lo que dice, pero podría simplemente copiar los datos de la página flash de origen a la página flash de destino mientras modifica los bytes que desea cambiar antes de borrar la fuente.
@mjh: ¿qué sucede si su origen y destino son los mismos y / o no tiene una página gratuita? Además, esto es lento: envía un comando de lectura, envía una dirección, lee un byte, cambia si es necesario, borra, envía un comando de escritura, envía una dirección, escribe un byte, repite x256, x512 o x4k. Su otra opción es enviar un comando de lectura, enviar una dirección de lectura, reloj para N ciclos, modificar los bytes que desea cambiar, borrar, enviar un comando de escritura, enviar una dirección de escritura, reloj para N ciclos. Esto toma aproximadamente 1/3 del tiempo que toma el búfer de RAM.
¿Por qué un registrador de datos necesitaría editar los registros en el micro?
@davidcary: si su registrador de datos no hace más que registrar una secuencia larga de bytes, tiene razón: nunca necesitará realizar cambios. Si tiene varias configuraciones o archivos de registro que pueden traspasar los límites de la página/bloque, o si desea realizar cambios en un encabezado del archivo al final, deberá editar la memoria sin borrar los datos existentes.
En este punto, solo necesito crear varios archivos de registro, no es necesario modificarlos, excepto cuando el usuario conecta el dispositivo al USB y lo descarga, entonces necesito borrar (o hacer que ese espacio vuelva a estar disponible) el registro anterior.
@Padu: probablemente estará bien con cualquiera de las opciones en ese caso. Estaba respondiendo a su pregunta bastante genérica sobre "qué tipo de memoria se puede usar con el MSP430" en lugar de una aplicación de registro de datos específica.

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.

No estoy de acuerdo. La sección borrable más pequeña en el AT25D es una página de 4kB, y pocos micros tienen tanta memoria RAM disponible. He usado la serie de chips AT25FS, que tienen un borrado de página pequeño (256 bytes), pero pesan menos de 5 MB. Ir con el sistema con búfer significa que no tiene que preocuparse tanto por la administración de RAM. Por supuesto, si no necesita editar sus registros, la serie AT25 funcionará bien.
Sí, las páginas de borrado grandes son molestas cuando una aplicación necesita escribir algún byte y luego cambiar ese byte. Pero, ¿por qué un registrador de datos necesitaría hacer eso? Me parece que, para la aplicación de aplicaciones de registro de datos, no importa si la sección borrable más pequeña es de 256 bytes o 1 Megabyte.

[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.