Así, pues, tras algunas pruebas ya tengo lista la primera versión operativa del módulo Verilog para el control I2C del MCP4725...
Este módulo permite distintas opciones de configuración, que para las pruebas controlo con un conjunto de interruptores DIL, con los bits 1,2 y 3 para definir el Modo de Funcionamiento, y los bits 4, 5 y 6 para establecer el valor analógico de salida.
Los códigos de esta configuración se resumen en la siguiente tabla:
El planteamiento del programa Verilog para las pruebas es el siguiente, con un módulo que contiene las rutinas I2C principales. A su izquierda el módulo auxiliar de configuración, y debajo del mismo el Debouncing+Pulse para activar la escritura mediante un pulsador...
El módulo auxiliar de configuración para pruebas envía al principal la dirección de escritura I2C (DIR), el dato a escribir (DAT), y el modo de funcionamiento (MODE). En un programa real todo esto vendría de distintos módulos...
Aquí, en las dos trazas superiores, una escritura en Modo Normal, cuyo ciclo dura 75 uS, con valor escrito 0 y analógico 0 Volts...
Y aquí, también una escritura en Modo Normal, con valor escrito 4095 y tensión 3,42 Volts... Observamos que los 4 bits USB están escritos en el 2º subframe, y los 8 LSB en el 3º...
Aquí una escritura de arranque para el Modo Rápido, en que escribe el DAC en 72 uS pero al final no cierra la comunicación del bus I2C (mantiene la línea SDA a 0), con lo cual, las siguientes reescrituras serán notablemente más cortas.
...Y al estar en Modo Rápido, las reescrituras no necesitan reconectar con la dirección I2C del DAC, con lo cual su ciclo se reduce a tan solo 49 uS... Este modo se mantendrá hasta recibir una orden de STOP...
La orden de STOP lo que hace es subir a 1 la línea de datos SDA y poco después la de reloj SCL, con lo cual se sale del Modo Fast y el bus I2C queda libre para cualquier otra comunicación. Esta orden dura 4 uS.
La orden o frame de escritura en la EEPROM es algo más largo que el Modo Normal, ya que contiene un subframe más, durando 98 uS. Los datos se escriben en este caso de forma distinta en los dos últimos subframes, en el Normal era 4+8 y en éste es 8+4...
Las EEPROM tienen un cierto número de reescrituras permitidas, normalmente de muchos miles pero variando según el chip, por este motivo la opción de regrabarlo se tiene que usar con precaución, solo cuando sea necesario guardar el valor...
Continuará...
Un saludo a todos.