¿Cuáles son las diversas formas en que un bus I2C puede bloquearse?

1

Soy muy nuevo en electrónica y he ingresado en el territorio del bus I2C. Desea comprender el comportamiento de los dispositivos compatibles según la especificación del protocolo I2C.

Una condición según el enlace a continuación es cuando un controlador maestro se reinicia en medio de una transacción. Es decir, el esclavo comprometido no sabe qué hacer ahora.

enlace

  1. No entiendo cómo se cuelga el bus para esto. El maestro que se reinició siempre podría iniciar una nueva transacción y los esclavos deberían poder leerla.

  2. ¿Hay alguna otra forma además de lo explicado anteriormente para provocar un bloqueo del bus?

  3. ¿El controlador del software puede causar este problema?

pregunta ultimate cause

1 respuesta

3

El maestro no puede emitir una condición de inicio o detención mientras un esclavo está manejando SCL o SDA. Si solo hay un esclavo en el bus, el peor de los casos sería cuando el maestro se reiniciara justo después de que el esclavo acaba de recibir una solicitud de "lectura", estaba en proceso de reconocerlo y todo está configurado para enviar un "0" en respuesta. En ese escenario, el primer reloj avanzaría más allá del reconocimiento y los ocho siguientes avanzaría más allá de los bits de datos, y el dispositivo manejaría SDA continuamente hasta que reciba el noveno reloj. Sin embargo, después de que el reloj marca el punto alto, baja la novena vez, el dispositivo flotaría en el bus (si no lo hubiera hecho antes) para buscar un ack del maestro.

Si hay varios dispositivos esclavos, un bus se puede bloquear permanentemente si dos dispositivos piensan que han recibido comandos para leer una cadena de cero bytes, pero (posiblemente porque el maestro se reinició en un momento que resultó en un pulso "runt" en SCL que fue lo suficientemente largo como para que lo viera un esclavo pero no el otro) los dos esclavos liberan el bus en diferentes momentos cuando buscan acks del maestro.

    
respondido por el supercat

Lea otras preguntas en las etiquetas