¿El expansor de puertos I2C de sondeo continuo lo dañará o reducirá su vida útil?

0

Estoy usando expansores de puertos I2C, a saber, TCA9554A y TCA6424A en mi proyecto. Tengo dos opciones para leer las entradas: (a) esperar a la interrupción y leer (b) seguir preguntando continuamente al chip por cualquier cambio de entrada.

Aquí está el código arduino de ejemplo para leer un puerto:

Wire.beginTransmission(0x22); //0x22 is device's i2c address for TCA6424A
Wire.write(0x00); //Command to access port 0
Wire.endTransmission();
Wire.beginTransmission(0x22);
Wire.requestFrom(0x22, 1); //Requesting port state as 1 byte data
byte inputs=Wire.read();
Serial.println(inputs, BIN); //Printing the received state data

Mis preocupaciones con respecto a la forma de votación son las siguientes:

1) Si las líneas I2C están bien con el manejo del tráfico de forma continua durante un período prolongado de tiempo. Mi proyecto se ejecutará durante meses (si no años). Solo el tiempo de inactividad será cuando se apague la red, pero eso no sucederá por más de una hora en un período de un mes.

2) Ya que leer el estado implica escribir algunos datos en algunos registros, se desgastarán esos registros que causan una falla temprana del expansor de puerto que la vida útil esperada.

Hojas de datos:

1) TCA9554A

2) TCA6424A

    
pregunta Whiskeyjack

1 respuesta

6
  

1) Si las líneas I2C están bien con el manejo del tráfico de forma continua durante un período prolongado de tiempo. Mi proyecto se ejecutará durante meses (si no años). Solo el tiempo de inactividad será cuando se apague la red, pero eso no sucederá por más de una hora en un período de un mes.

No, no es así como funciona la conducción. A las líneas I²C no les importa si las usas o no.

  

2) Ya que leer el estado implica escribir algunos datos en algunos registros, se desgastarán esos registros que causan una falla temprana del expansor de puerto que la vida útil esperada.

Es muy probable que estos registros sean simplemente algún tipo de RAM, así que puede estar seguro de que esto no es crítico. Piénselo de esta manera: cada instrucción que ejecuta su CPU involucra al menos una modificación de registro. Haces un par de miles de millones de estos por segundo .

Los semiconductores en general son relativamente indiferentes al uso frecuente, a menos que se pongan demasiado calientes con eso.

Una excepción es la EEPROM (y en esa clase, específicamente la memoria flash), que en realidad se degrada físicamente a través de ciclos de escritura / borrado con demasiada frecuencia (los ciclos de lectura no son tan críticos). De acuerdo con el diagrama de bloques, no hay nada de eso en tus chips ...

Un consejo general: dichos CI se venden en decenas de miles a clientes comerciales / industriales. Si está comprando un componente de "marca registrada", y tiene alguna limitación en cuanto al número de veces que se puede usar, la hoja de datos lo mencionará prominentemente . Simplemente porque el fabricante no puede permitirse que sus dispositivos mueran en el campo inesperadamente, dejando al cliente (que compró un par de miles) malhumorado.

Su aplicación no parece demasiado dura.

Si tuviera que darte un consejo de desarrollo de aplicaciones: si tu expansor de IO no está muy lejos (lo que justificaría usar I²C), podrías ser mucho más fácil, más barato y más rápido cuando utilizas simplemente un paralelo de 74HC *** registro de desplazamiento en serie, conectado a través de SPI en lugar de I²C.

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas