¡Esta es una revisión vieja del documento!


[Bus I2C] Sincronización de la señal de reloj

  • La señal de reloj generada por el master debe cumplir unos tiempos mínimos. Por ejemplo para 100 kHz: SCL al menos 4,7 μs en 0 y 4 μs en 1. Éstos pueden ser tiempos muy cortos para determinados slave que necesitan mas tiempo para procesar el dato de la línea SDA.
  • El slave puede ralentizar la cadencia de SCL si su tratamiento de los datos bit a bit es más lento que el del master. Para ello fuerza a 0 SCL, lo que obliga al master a permanecer en un estado de espera, y la vuelve a liberar, es decir desbloquear, cuando está listo para tratar otro bit, ya sea para leerlo o escribirlo, para continuar la transferencia de datos.
  • Generalizando
    • La sincronización del reloj se realiza gracias a la conexión AND de todos los dispositivos del bus a la línea SCL. Esto significa que un flanco de bajada de un Master en SCL hace que la línea pase a 0, manteniéndola en ese estado. Sin embargo un flanco de subida no cambia el estado de SCL si otro reloj esta todavía en nivel bajo 0. Por lo tanto SCL permanecerá a 0 tanto como el periodo mas largo de cualquier dispositivo cuyo nivel sea 0. Los dispositivos que tienen un periodo mas corto de reloj 0 entran en un periodo de espera.
    • Cuando todos los dispositivos conectados al bus han terminado con su periodo 0, es decir están preparados para el tratamiento de un nuevo bit, la línea del reloj se desbloquea y pasa a nivel 1. Por lo que hay que diferenciar entre los estados de reloj de los dispositivos y los estados de la línea SCL.
  • Resumiendo: La sincronización de la línea SCL se genera a través de…
    • … la señal a 0 por el dispositivo con el mas largo periodo, es decir el dispositivo mas lento, de nivel a 0 y …
    • … la señal a 1 por el dispositivo con el mas corto periodo, es decir el dispositivo mas rápido, de nivel a 1.
  • Si un dispositivo fuerza la línea SCL a 0, el master aunque la quiera poner a 1 no lo consigue hasta que todos los dispositivos que la fuerzan a 0 la liberen, es decir la pongan a 1.
  • Cuando un receptor lee el bit SDA con SCL a 1, mientras trata dicha información fuerza SCL a 0 hasta que esta listo para tratar el siguiente bit.
  • doc/tec/lab/bus_i2c/0_sincro_clk/inicio.1774719263.txt.gz
  • Última modificación: 2026/03/28 18:34
  • por fepg