Velocidad de reloj y confiabilidad mínimas de I2C

12

¿Hay una velocidad de reloj mínima especificada por I2C? Sé que la frecuencia de reloj más utilizada es de 100 kHz y hay un modo "rápido" de 400 kHz compatible con algunos dispositivos, y un modo más rápido pero compatible con otros dispositivos (¿creo que 1MHz?). Dado que la señal SCK es generada por el maestro, supongo que uno podría operar a una velocidad mucho más lenta que cualquiera de ellas. ¿Existe un límite inferior en la práctica? ¿En qué medida los dispositivos esclavos se preocupan por la velocidad del reloj (por ejemplo, es común que tengan tiempos de espera cortos)? La razón por la que pregunto es que me pregunto si es posible que I2C pueda correr una distancia mayor (por ejemplo, 20 pies) para programar EEPROM I2C de manera confiable en una configuración de probador de producción. Supongo que no funcionará de manera confiable a esa distancia a las tasas de datos estándar. ¿Estoy completamente fuera de la base al pensar que reducir la velocidad del reloj mejorará la confiabilidad en distancias más largas (por ejemplo, es realmente una cuestión de la fuerza de la unidad y los tiempos de subida / caída)?

    
pregunta vicatcu

3 respuestas

16

No, no hay una frecuencia mínima, la frecuencia de reloj mínima es 0 o DC. Consulte la especificación , página 48.

Pero tendrás que prestar atención a los tiempos de subida y caída. Son 1000 ns y 300 ns máximo, resp. Y un cable más largo, con algo de capacitancia, influirá en los bordes, independientemente de la frecuencia.

Es esa capacitancia, junto con las resistencias de pull-up que determinarán el tiempo de subida. El tiempo de caída no es un problema porque el FET que tira de la línea baja tiene una resistencia muy baja y la constante de tiempo de caída también será muy baja. Así que nos quedamos con el tiempo de subida. Para obtener un tiempo de subida de 1000 ns en un cable de 200 pF, sus resistencias pull-up no deben ser más grandes que 2.2 kΩ. (aumenta el tiempo hasta el 90% del valor final).

El gráfico muestra la resistencia máxima de pull-up (en) frente a la capacitancia del cable (en pF) para obtener 1000 ns de flancos ascendentes. Tenga en cuenta que los dispositivos I2C no tienen que hundir más de 3 mA, por lo tanto, a 3.3 V, la capacitancia del bus no debe ser superior a aproximadamente 395 pF, de lo contrario, la resistencia al pull-up debería ser menor a 1100, y permitir más que los 3 mA. Esas son las líneas discontinuas verdosas. Para una operación de 5 V, la capacidad permitida es incluso de 260 pF, para un valor de pull-up de 1667 ((las líneas discontinuas de color púrpura).

    
respondido por el stevenvh
4

Debería poder resolver los problemas de longitud de línea con una selección cuidadosa de los controladores y la coincidencia de impedancia.

Otra opción, suponiendo que el largo plazo es parte de la configuración y no el producto, podría ser usar algo que maneje bien la distancia, como RS422 (o prácticamente, incluso RS232) para hablar con un microcontrolador colocado en el conector del prueba del arnés, que luego hablaría i2c a una distancia bastante corta del objetivo.

O probablemente podría hacer esto sin la inteligencia, utilizando una pequeña placa que unía un protocolo de señalización diferencial con receptores de activación Schmidt hacia y desde la señalización i2c en el objetivo.

Es probable que sus recorridos no sean lo suficientemente largos como para que los tiempos de propagación de la señal (problemas de asentamiento ausentes) requieran velocidades de reloj particularmente lentas para evitar girar el bus mientras los datos antiguos todavía están en vuelo.

Por supuesto que querrá hacer una verificación de lectura de los datos que acaba de programar.

Solo para fines de comparación, los monitores IIRC VGA tienen una lectura de ID i2c (o es similar a i2c), que probablemente aún funcione si agrega un cable de extensión de 6 pies al cable de 3 o 4 pies de serie.

    
respondido por el Chris Stratton
3

He ejecutado I2C a aproximadamente 100Hz sin ningún problema. Como dijo @stevenvh, solo tiene que preocuparse por la velocidad máxima y la capacidad de la línea.

    
respondido por el Sérgio Sena

Lea otras preguntas en las etiquetas