Lo que se necesita para almacenar datos legibles / grabables en flash / eeprom [cerrado]

0

Estoy deseando agregar algo de memoria legible / grabable a mi proyecto ATmega8 / attiny donde puedo almacenar datos, recuperar los datos almacenados y luego sobrescribirlos. Los datos almacenados deben poder recuperarse incluso después de una pérdida de energía. Los tipos de datos que deseo almacenar son matrices de caracteres (cadenas) que se almacenan dentro de un tipo de tabla de búsqueda (algo así como un hash en el que se utilizan pares clave: valor).

Sé que se usa memoria flash (o EEPROM), pero no estoy exactamente seguro de qué número de pieza buscar que sea compatible con un ATmega8 / attiny ni qué protocolos / pines utiliza en el IC.

Del mismo modo, ¿cómo se interactúa normalmente con un IC de almacenamiento externo? ¿Hay protocolos específicos que se utilizan para hacer la tarea? ¿Y qué tal bibliotecas específicas para interactuar con estas piezas de hardware?

Sobre todo quiero saber:

  • ¿Cuáles son algunos números de pieza para dispositivos de almacenamiento flash / eeprom compatibles con un ATmega8 / attiny
  • ¿Cómo se conectan / interactúan estos IC de almacenamiento externo normalmente?
  • ¿Qué protocolos utilizan para la comunicación
  • Si hay bibliotecas para simplificar las comunicaciones entre los CI

¡Gracias!

    
pregunta randy newfield

1 respuesta

3

EEPROM interna

Los microcontroladores atmega8 / attiny tienen EEPROM interna de hasta 512 bytes. Si es suficiente para su aplicación, solo úselo. De lo contrario, es posible que desee utilizar la EEPROM interna para las teclas y los punteros, y la externa para las cadenas.

EEPROM externa

Por lo general, están disponibles en tamaños de hasta 1 Mbit o tal vez 2. Verifique los requisitos de voltaje, decida el tamaño y la interfaz.

Escoge uno de la serie Atmel AT24C, lo más probable es que estén bien.

Flash externo

Si necesitarías más de 256 kbytes, entonces debería ser un flash serie, disponible hasta 1 Gbit. Hay más restricciones aquí, ya que normalmente solo tienen SPI, no I2C. El suministro y la tensión de E / S están en el rango de 1,7 V / 3,3 V, si su ATmega funciona con 5 V, puede desconectar el cableado de MISO directamente y utilizar resistencias divisoras de voltaje simples para las otras líneas.

Para más de 1 Gbit, use una tarjeta SD, también se puede acceder a ella con SPI.

Interfaz: I2C o SPI

I2C (a veces llamado TWI) requiere solo 2 pines. Puede conectar más dispositivos I2C a un bus, siempre que tengan direcciones diferentes.

Simplemente conecte SCL con SCL, SDA con SDA, agregue una resistencia pullup a ambos, 1 kOhm para 3.3V, 1.6 kOhm para 5V. Configúrelos como salidas de drenaje abierto. Hay ejemplos de código en las hojas de datos de la atmósfera.

El protocolo para acceder a EEPROMS es muy simple, ponga la dirección del dispositivo seguida de la dirección de memoria y los datos reales para escribir, o inicie una lectura I2C después de leer los bytes de la dirección. Siempre revise el bit NACK devuelto para ver si la memoria todavía está ocupada almacenando el byte anterior.

SPI

Hay cuatro líneas: Reloj, Selección de chip, MISO (master in slave out) y MOSI (master out slave in). No se requieren actualizaciones, los 4 son unidireccionales, MISO va de la memoria al procesador y los otros 3 del procesador a la memoria. El protocolo es algo más complicado que I2C, especialmente para escribir flash.

    
respondido por el berendi

Lea otras preguntas en las etiquetas