Esclavo I2C con respecto a los bordes del reloj maestro

1

Estoy trabajando con los microcontroladores STM32F4. El periférico I2C utiliza un ajuste de reloj.

Me han dicho que no importa cuándo se utilice el periférico como dispositivo esclavo.

Si eso es cierto, ¿cómo se mantienen el tiempo de espera, la alineación y el espaciado adecuados antes y después de mantener los bordes del reloj maestro? es decir, si se recibe el flanco descendente del reloj del maestro y el dispositivo esclavo asume una velocidad de reloj muy lenta, ¿no es posible que el dispositivo esclavo cambie la línea de datos demasiado tarde, posiblemente después de que se reciba el siguiente flanco ascendente del reloj? / p>     

pregunta

1 respuesta

2

El maestro de bus proporciona el reloj. Por lo tanto, el esclavo no necesita tener parámetros de generación de reloj, ya que no está generando el reloj.

El esclavo no necesita saber la velocidad del reloj que entra. Recibe el flanco descendente del reloj y luego cambia los datos tan pronto como puede. De hecho, se requiere (según la especificación) cambiarlo dentro de un cierto período de tiempo del flanco descendente del reloj (por ejemplo, dentro de los 3.45 en modo estándar (100 kHz)).

El maestro luego bloqueará los datos en el flanco ascendente del reloj. Esto no puede venir "demasiado pronto" para que los datos cambiados hayan llegado, porque la especificación nuevamente requiere que el reloj del maestro no sea demasiado rápido (mínimo período de 4.7 en el modo estándar).

Existen otras complicaciones relacionadas con los tiempos de espera y la limitación de las tasas de movimiento dependiendo de la versión de la especificación I2C con la que estés lidiando (y, por lo tanto, la tasa de datos que estás usando), pero no voy a entrar en eso.

    
respondido por el David Smith

Lea otras preguntas en las etiquetas