¿Está permitido detener y restaurar la transmisión I2C?

¿Está permitido detener y restaurar la transmisión I2C? Me gustaría detenerlo en diferentes períodos de transmisión y luego, por ejemplo, después de 500 ms, restaurarlo al estado en que se detuvo. Estoy pensando en habilitar y deshabilitar las transiciones SCL. Si está permitido, ¿es una mala práctica?

Al depurar las comunicaciones I2C, esto sucede accidentalmente y ha sido una fuente de dolor de cabeza para mí. No todos los dispositivos son particularmente buenos para tener fases arbitrarias del reloj I2C extendidas indefinidamente. Rápidamente aprendí a diseñar siempre de manera que generara relojes sin una condición de inicio como medio para recuperar el control después de un reinicio, lo que ayuda a menos que un esclavo se bloquee con SCLafirmado y mantenido bajo. Por lo general, no hay recuperación de esa condición. Si necesita una recuperación confiable en un perro guardián, tenga cuidado con dispositivos como ese.

Respuestas (2)

La velocidad mínima del bus para todos los modos I 2 C es 0 Hz. Esto significa que es válido en la especificación I 2 C dejar de pulsar el reloj (funcionamiento estático).

Sin embargo, esto no significa que los esclavos también deban soportar el funcionamiento estático; pueden tener tiempos de espera internos que pueden transcurrir antes de que se reanuden las comunicaciones. Siempre revise la hoja de datos de cualquier dispositivo esclavo I 2 C para verificar que admitan el funcionamiento estático.

En la hoja de datos solo se especifica la frecuencia máxima. La frecuencia mínima se deja en blanco. ¿Crees que puedo interpretar que el divce admite una operación estática?
Debe verificar el comportamiento específico del dispositivo. UM10204 especifica 0 Hz, pero eso no es una garantía por dispositivo.

Creo que cada I2C debe ser un diseño completamente estático debido al estiramiento del reloj.

EDITAR:

El estiramiento del reloj también está permitido para los maestros. Además, no importa quién lo haya causado, tanto el amo como el esclavo, deben manejarlo correctamente. 5 horas tampoco es razonable, pero aún está dentro de las especificaciones.

Excepto que el estiramiento del reloj lo realizan los dispositivos esclavos, y 500 ms es un estiramiento un poco excesivo en la mayoría de las condiciones.