Esta nota de aplicación describe cómo usar un extensor de E/S I²C para conectar una tarjeta Compact Flash (CF) a la interfaz I²C de un microcontrolador. Describe los comandos de software para leer y escribir datos. El extensor de puerto de E/S MAX7311 está integrado en el circuito de diseño.
El registro de datos generalmente requiere una cantidad significativa de memoria para almacenar los datos medidos, especialmente cuando la cantidad de canales monitoreados es grande. Para complicar aún más las cosas, la memoria de datos interna limitada (RAM y EEPROM) de los pequeños microcontroladores y la falta de direcciones y puertos de datos a menudo impiden la adición de memoria externa. El circuito de la Figura 1 utiliza un extensor de E/S I²C de 16 bits (U1, MAX7311) para conectar una tarjeta CompactFlash (CF) a la interfaz I²C del microcontrolador. La interfaz I²C es una elección natural, ya que muchos circuitos ya la utilizan para conectar ADC, DAC, relojes en tiempo real y otros componentes externos.
La tarjeta CF se controla en modo de asignación de memoria con un bus de datos de 8 bits de ancho. El puerto 1 (líneas de E/S 0-7) del MAX7311 se conecta al bus de datos de la tarjeta CF. El puerto 2 se conecta a las señales de dirección y control. Los registros de datos de la tarjeta CF se pueden leer y escribir utilizando los registros de entrada y salida del puerto 1. El puerto 2 direcciona los registros correctos y genera señales de lectura y escritura.
Para escribir en un registro en particular, primero escriba los datos en el puerto 1, que está configurado como una salida. Luego escriba los mismos datos en el puerto 2 tres veces seguidas. Sin embargo, el pin WRN genera una señal de escritura cambiando de 1 a 0 a 1. Los bits de dirección A2-A0 indican el registro que se va a escribir. Si CE baja mientras RDN es alto, la tarjeta CF está habilitada. Se puede utilizar un procedimiento similar para leer de un registro específico. El puerto 1 se usa como puerto de entrada y se lee después de tres escrituras en el puerto 2. Aquí, el pin RDN genera una señal de lectura cambiando de 1 a 0 a 1. Después de tres escrituras, el circuito lee el puerto 1 y pone a disposición los datos. Los tres bits de dirección le permiten leer, escribir y direccionar los siguientes ocho registros internos.
El registro 0x00 se utiliza para el intercambio de datos entre el host y la tarjeta CF. Los registros 0x03, 0x04, 0x05 y 0x06 se utilizan para especificar la pista desde la que se leen o escriben los datos. Cada pista contiene 512 bytes de datos. El procesador indica la lectura/escritura de pistas y otras funciones escribiendo en el registro de comando. Puede leer los registros de estado y error para obtener el estado (ocupado, datos listos, etc.) y las condiciones de error.