¿Desea cambiar la dirección de eeprom? [cerrado]

1

Estoy trabajando con un dispositivo que lee y escribe en un eeprom a través de I2C. Utiliza automáticamente una dirección de inicio en la parte inferior (inicio) y no puedo cambiar esto. Pero este dispositivo utiliza una cantidad de espacio bastante pequeña en comparación con los eeproms comunes en estos días. Me gustaría introducir un sistema de opciones alternativas ("ajustes preestablecidos", "programas" o "espacios" si lo desea) usando un interruptor de hardware.

¿Existe un tipo de dispositivo de registro de desplazamiento que puede hacer que el direccionamiento de la eeprom se desplace hacia arriba en una cantidad específica tal que el dispositivo maestro pensará que está leyendo desde la dirección 0 pero en realidad está leyendo desde una dirección mucho mayor? diferente espacio de direcciones de la eeprom que no se superponen)? Necesitaría que este cambio fuera controlado por mi interruptor de hardware y quiero que al menos 5 "espacios de direcciones" sean posibles. Si entiendo correctamente, esto es lo contrario de un mux I2C.

Actualizar: Para ayudar a aclarar la pregunta (aunque Duskwuff entendió y proporcionó una sugerencia útil): El dispositivo principal lee los datos de inicialización de un eeprom cuando se inicia. Configuración muy sencilla. Simplemente comienza a leer a 0. Quería crear un sistema de ajustes preestablecidos de inicio para este dispositivo de tal manera que un interruptor de posición múltiple de algún tipo permitiría al usuario seleccionar qué ajuste preestablecido de inicio estaría activo. Pero esperaba hacer esto sin usar un microcontrolador y / o varios chips eeprom. La pregunta era si hay un chip oscuro (o no tan oscuro) en el mercado que pueda "traducir" la dirección de la 'transacción I2C' de lectura (o escritura) para mapearlos a un espacio diferente en un solo eeprom . El espacio de la pizarra es una consideración para la razón por la que estaba buscando tal cosa. Parece que la respuesta es "no". Aunque si puedo encontrar un micro con suficiente memoria interna, podría utilizarlo como una solución de un solo chip (como se menciona en la otra respuesta y comentarios). Hasta ahora, no he encontrado un micro adecuado, pero el proyecto está en segundo plano de todos modos.

    
pregunta chmedly

2 respuestas

2

Continuando con lo que Marcus ya mencionó en los comentarios, es probable que pueda usar un ATTiny85 o incluso un ATMega328 para emular múltiples EEproms de tamaño pequeño a mediano. Existe un código fácilmente disponible en Arduino land para leer y escribir en la memoria del programa que en un ATMega328 le daría quizás 28k * 8 sin tener que recurrir a EEprom externa para su dispositivo de emulación. El único punto a tener en cuenta es que el flash del programa solo está clasificado para 10k ciclos de escritura de borrado, mientras que un EEprom se calificaría para 100k - 500k ciclos. Si solo estás leyendo de tu EEprom, esto no sería un problema, por supuesto.
Tiene un montón de pines para permitir la selección de páginas de EEprom para servir en el bus I2C y el código para un esclavo I2C para el AVR está nuevamente disponible.

Le sugiero que pueda implementar esto en un procesador pequeño como el Digispark Pro (basado en ATTiny85) y obtener aproximadamente 6k de almacenamiento, y 28k en el Arduino Nano, y ambos podrían ser alimentados por el zócalo EEprom. Ambos procesadores son compatibles con USB, por lo que puede mover fácilmente las páginas EEprom desde y hacia el dispositivo.

    
respondido por el Jack Creasey
0

He oído hablar de algunas partes inusuales, como Linear Technology LTC4317 , que puede traducir el I2C la dirección de un dispositivo, pero nunca he visto un dispositivo que intente alterar el contenido de una transacción I2C, como la dirección de una operación de lectura / escritura EEPROM.

Su mejor apuesta es probablemente adjuntar varias EEPROM y encontrar alguna forma de deshabilitar las no deseadas. Por ejemplo, podría usar los pines de dirección para mover las EEPROM inactivas a una dirección diferente de la activa.

    
respondido por el duskwuff

Lea otras preguntas en las etiquetas