Así que estoy investigando cómo interactuar con un chip EEPROM a través de I2C con un AVR (todavía estoy aprendiendo mucho sobre la interfaz).
De todos modos, el AT24C16, por ejemplo (o esa familia de EEPROM), parece bastante popular. Miré la hoja de datos y en su mayoría tenía sentido excepto por una parte:
Entonces creo que mi confusión radica en las "Direcciones" de dónde escribir. ¿O tal vez estoy confundiendo la dirección del dispositivo? Si solo tuviera 1 EEPROM conectada... ¿sería simplemente cero? Estoy asumiendo que esto es solo si tuvieras más de un chip en la línea i2c?
De todos modos, vamos a suponer que tengo 1, necesitaría seguir estos pasos según mi comprensión (corríjanme si me equivoco):
- Inicializar I2C
- Enviar el bit de inicio
- Enviar la dirección del dispositivo (¿que supongo que sería 0x00?, esto asume escribir en R/W es 0, por supuesto, ya que es el LSB)
- Esperar la ACK de vuelta del EEPROM (¿esto literalmente solo sería un 0 que vuelve o qué?)
- Escribir la dirección de la palabra (No entiendo cómo un chip puede tener 1024 ubicaciones, por ejemplo, si hay 8 bits para una ubicación? ¿el valor máximo para 8 bits es 255?)
- Esperar ACK para ver si es una dirección válida
- Enviar mis datos hasta que envíe el bit de parada (Asumo que el EEPROM "sabe" moverse a la siguiente dirección después de cada byte de datos? ¿o hay que actualizar la dirección de la palabra cada vez?)
Gracias! solo un poco confundido por el funcionamiento interno.