Temporización I2C: Guía de definición y especificación (2ª parte)

En esta entrada del blog, hablaremos de I2C y las diferentes formas en que los fabricantes proporcionan a veces estas especificaciones. Para una introducción a la I2C y sus protocolos, consulta el post aquí.

I2Las transferencias de datos en C se producen a través de una interfaz física de dos hilos que consiste en una línea de reloj serie unidireccional (SCL) y una línea de datos bidireccional (SDA). Estas transferencias pueden realizarse a velocidades de 100kbps en modo estándar, 400kbps en modo rápido, 1Mbps en modo rápido plus y hasta 3,4Mbps en modo de alta velocidad. Cada velocidad de transmisión de datos tiene su propia especificación de tiempo que el maestro y el esclavo deben cumplir para una correcta transferencia de datos. I2Los dispositivos con capacidad C deben ser capaces de seguir las transferencias a sus propias tasas de bits máximas, es decir, ser capaces de transmitir o recibir datos a la tasa de datos seleccionada. Hay matices como los tiempos de preparación y retención para una correcta transferencia de datos a una determinada velocidad de transmisión. Hablaremos de estas especificaciones en esta entrada del blog.

La figura 1, tomada del documento "I2Especificación del C-Bus y manual del usuario", representa un diagrama de temporización que proporciona definiciones de las diferentes especificaciones de temporización para los dispositivos en modo rápido en el I2Autobús C. Sólo utilizaremos el diagrama de temporización en modo rápido para nuestra discusión, ya que la mayor parte del LTC I2Las piezas C admiten este modo. Sin embargo, las definiciones comentadas también son aplicables a otros modos de velocidad. Además, sólo hablaremos de cómo se aplican estas especificaciones a los dispositivos esclavos, ya que Linear Technologies I2Los dispositivos compatibles con C suelen ser esclavos.

Figura 1: I2Definición del temporizador de modo rápido C

tr se define como el tiempo que tarda el flanco de subida en alcanzar el 70% de amplitud desde el 30% de amplitud para SDA y SCL, mientras que tf se define como el tiempo que tarda el flanco descendente en alcanzar una amplitud del 30% desde una amplitud del 70%.

Figura 2: Tiempos de subida y bajada

El tiempo de asentamiento se define como el tiempo que los datos deben permanecer estables antes de ser muestreados. Este intervalo suele ser entre el flanco ascendente de SCL y el cambio de estado de SDA. El tiempo de retención, en cambio, se define como el intervalo de tiempo tras el inicio del muestreo. Este intervalo suele estar comprendido entre el flanco descendente de SCL y el cambio de estado de SDA. Es importante que los datos se mantengan estables durante estos intervalos, ya que si no es así, los datos se muestrearán incorrectamente.

En el I2C Estándar El tiempo mínimo requerido en estos intervalos, que varía según el modo de velocidad de funcionamiento, se especifica para las condiciones de ARRANQUE y PARADA, así como para los bits de datos. I2Los dispositivos esclavos compatibles con C se especifican en estos parámetros para reconocer los datos entrantes.

Recuerda que la condición de inicio se define como cuando la línea SDA pasa a LOW antes de que SCL pase a LOW, es decir, SDA pasa a LOW cuando SCL está en HIGH.

Figura 3: Condiciones de arranque y parada

Tiempo de mantenimiento de la condición de inicio (tHD;STA): es el tiempo mínimo que los datos deben estar bajos antes de que SCL se convierta en bajo. Se mide como el tiempo necesario para pasar del 30% de la amplitud SDA de una transición HIGH a LOW al 70% de la amplitud SCL de una transición HIGH a LOW.

Figura 4: Tiempos de arranque y mantenimiento para una condición de arranque (repetida)

Tiempo de arranque para una condición de arranque (tSU;STA): es una especificación de tiempo que sólo se tiene en cuenta durante una condición de inicio repetida. Es el tiempo mínimo que la línea SDA debe permanecer alta antes de iniciar un arranque repetido. Se mide como el intervalo de tiempo entre el 70% de la amplitud SCL de una transición LOW a HIGH y el 70% de la amplitud SDA de una transición HIGH a LOW.

En una condición de parada, SDA pasa al estado ALTO después de la transición ALTA de SCL. Ver la Figura 3. No hay ningún requisito de tiempo de retención para una condición de parada, sin embargo, siempre se requiere un tiempo mínimo de preparación.

Tiempo de preparación para una condición de parada (tSU;STO) se mide como el tiempo entre el 70% de amplitud del flanco ascendente de SCL y el 30% de amplitud de una señal ascendente de SDA durante una condición de parada.

Figura 5: Tiempo de liquidación para una condición de parada

Del mismo modo, existe un tiempo de asentamiento para los datos que se define como el tiempo mínimo necesario para que SDA alcance un nivel estable antes de que se produzca una transición a SCL. Se mide como un 30% de amplitud SDA durante un flanco descendente o un 70% de amplitud SDA durante un flanco ascendente y un 30% de amplitud SCL durante un flanco ascendente.

Figura 6: Tiempo de establecimiento de los datos

La validez de los datos se mide en cada transición de datos y de reloj. EL I2La especificación C da los tiempos máximos de validación de datos permitidos a diferentes velocidades. El tiempo de validación de los datos tDV;DAT se mide entre el flanco de caída de DAS al 30% o el flanco de subida de DAS al 70% de amplitud respecto al 30% del flanco de caída de SCL. También hay una especificación separada del tiempo de validez del acuse de recibo tDV;ACK que se mide de forma similar al tiempo de habilitación de datos, salvo que se mide sólo en el flanco de caída del octavo bit de reloj. Ver la figura 1.

El tiempo de amortiguación especifica el tiempo libre del bus entre las condiciones de parada y arranque. Este periodo de tiempo permite a otros dispositivos del bus detectar un bus libre e intentar transmitir datos. Los dispositivos esclavos suelen especificar este tiempo como tiempo libre mínimo requerido en el bus. Si un maestro -que se ha comunicado previamente con otro dispositivo- intenta dirigirse a un dispositivo esclavo sin dejar pasar el tiempo de amortiguación entre su condición de parada y de inicio, es posible que el dispositivo esclavo no pueda diferenciar la nueva condición de inicio como una transacción independiente y no responda.

Figura 7: Tiempo libre del autobús

Ahora que hemos definido las diferentes especificaciones de temporización, veamos cómo las especifica el I2C. Véase la figura 8, extraída de la especificación de NXP I2Manual del usuario de C.

Figura 8: NXP I2Especificación de tiempo C

LA I2C define sus parámetros para que los diseñadores de CI puedan diseñar sus circuitos para que sean compatibles con los requisitos del bus. Por ejemplo, un CI compatible con el modo rápido I2C se diseñaría para reconocer un tiempo de retención de la condición de inicio de al menos 0,6µs. Podría diseñarse para reconocer un tiempo de retención más rápido, pero como mínimo debería reconocer tiempos de retención de hasta 0,6µs.

Tomando esta especificación, los fabricantes definen la I2C de sus circuitos integrados de dos maneras. A continuación se dan ejemplos.

El LTC2493 es un ADC Delta Sigma de 24 bits que especifica su I2C de la siguiente manera:

Figura 9: LTC2493 I2Tabla de especificaciones de tiempo C

Mientras que el LTC4261, que es un controlador Hot Swap de 48V, especifica la temporización como se muestra a continuación:

Figura 10: Tabla de especificaciones de temporización del LTC4261

¿Te has dado cuenta de la discrepancia? Los dos dispositivos tienen las mismas especificaciones pero se presentan de forma diferente, y aunque esto puede resultar confuso, se explica fácilmente.

La tabla de especificaciones de temporización del LTC2493 representa los datos desde la perspectiva del diseñador de firmware, indicándole exactamente lo que debe hacer. Por ejemplo, el tiempo de preparación para una condición de inicio repetido se especifica como un mínimo de 600ns, lo que significa que el maestro debe proporcionar un impulso con un tiempo de preparación de al menos 600ns. Aquí tienes una copia del I2C y le indica al ingeniero del firmware cuál debe ser la sincronización de las señales.

El LTC4261, en cambio, representa los datos desde la perspectiva del propio CI, indicando al diseñador del firmware lo que el propio CI es capaz de hacer. Por ejemplo, el tiempo mínimo de preparación para una condición de arranque repetida se define como un número típico de 30ns y un máximo de 600n, lo que significa que el LTC4261 garantiza que el tiempo mínimo de preparación no es superior a 600ns (por lo que cumple el requisito mínimo de 600ns de la especificación), de hecho puede reconocer intervalos de tiempo de preparación de hasta 30ns, lo que permite un mayor margen de temporización.

Así, las especificaciones de tiempo pueden presentarse de forma diferente aunque describan los mismos datos. En el caso de los dos ejemplos anteriores, ambas partes cumplen la norma I2C y se adhiere a la I2Requisitos de tiempo C.

Si quieres conocer otros artículos parecidos a Temporización I2C: Guía de definición y especificación (2ª parte) puedes visitar la categoría Generalidades.

¡Más Contenido!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir