Como programar una EEPROM

Al buscar una EEPROM paralela de 64K x 8, uno de los chips más disponibles es el 27SF512 . Google indicaría que los entusiastas de los automóviles lo usan comúnmente para reemplazar los chips en varios automóviles. He encontrado programadores dedicados que cuestan cientos de dólares, pero realmente no quiero hacer eso. Me gustaría programarlo desde mi computadora a través de un Arduino en una conexión en serie.

De la hoja de datos:

El modo de programación para SST27SF512 se activa afirmando 11,4-12 V en el pin OE#/VPP, VDD = 4,5-5,5 V y VIL en el pin CE#. Estos dispositivos se programan byte a byte con los datos deseados en la dirección deseada usando un solo pulso (CE# pin bajo para SST27SF512 y PGM# pin bajo para SST27SF010/020) de 20 µs. Usando el algoritmo de programación MTP, el proceso de programación de bytes continúa byte por byte hasta que se haya programado todo el chip.

Entiendo que necesito aplicar alto voltaje al pin VPP, y que CE se convierte en un pin de reloj de algún tipo. Simplemente no tengo idea de qué es el algoritmo de programación MTP.

En el mejor de los casos, puedo poner la dirección que quiero escribir y los datos en los pines apropiados y poner CE bajo para almacenar los datos. Sin embargo, parece que tal vez tengo que escribir cada byte en secuencia. Eso también está bien, pero no he podido encontrar ningún detalle firme sobre el protocolo exacto a usar.

También parece que necesito borrar completamente el chip a todos los 1 antes de cualquier programación, pero eso parece mucho más sencillo.

Me gustaría asegurarme de que entiendo lo que estoy haciendo antes de pagar por un lote de papas fritas.

Si implementa esto, escríbalo en alguna parte; sería muy bueno ver un diseño de programador Arduino EEPROM.
Servirá. Todavía no tengo las piezas, pero definitivamente publicaré un enlace de blog una vez que tenga todo conectado.
La parte difícil es cómo vas a obtener 64K de datos en tu arduino. Estaba haciendo algo similar pero alrededor de 1 MB y terminé saltándome el arduino y reutilizando el puerto de la impresora en una computadora de escritorio vieja.
@JGord Presumiblemente transmitiéndolo a través de la interfaz serial USB de Arduino.

Respuestas (3)

Consulte las páginas 15 a 18 de la hoja de datos. Encontrará algunos Diagramas que explican bastante bien los procedimientos involucrados. También hay diagramas de tiempos en las páginas 12 y 13.

Por ejemplo, para borrar el chip tienes que hacer lo siguiente:

  1. Configure A9 y OE#/VPP a 12V
  2. Mantenga CE # bajo durante al menos 100 ms
  3. Eliminar 12V de A9 y OE#/VPP
  4. Espera un momento (1µs)
  5. Verifique todas las direcciones para 0xFF (si esto falla, hubo algún problema con la operación de borrado)

Para programar haces lo siguiente:

  1. Establecer OE#/VPP a 12V
  2. Establecer dirección de byte en A0-A15
  3. Establecer datos en D0-D7
  4. Pulso CE# bajo durante 20 µs
  5. Vuelve a 2. para más datos
  6. Eliminar 12V de OE#/VPP
  7. Espera un momento (1µs)
  8. Verifique todos los datos escritos

La ficha técnica tiene todo lo necesario para poder programarlo.

Consulte la página 17, donde le brinda un buen diagrama de flujo para mostrarle cómo hacerlo.

El diagrama de tiempo en la página 13 también es muy útil.

El algoritmo "MTP" es el algoritmo para este chip - un chip "Programable muchas veces". Donde dice "El algoritmo de programación MTP" simplemente significa "El algoritmo que usamos para este chip".

El algoritmo de programación se encuentra en la página 16 de la hoja de datos. Parece bastante sencillo y no debería tener problemas para implementarlo en su Arduino.

Apesto leyendo hojas de datos. Parece que es tan simple como podría esperar. Gracias.
@CMP: y aún así tendrás que aprender a leerlos. De lo contrario, hará preguntas (triviales) aquí por el resto de su vida, e incluso entonces muchas respuestas lo remitirán a la hoja de datos. (Sí, lo sé, soy un maníaco de los documentos. ¿Qué puedo decir? :-))
De acuerdo. Tendré más cuidado. Pero ustedes son increíblemente útiles.