Calculadora de Resistencia Pull-up I2C
Calcula el valor óptimo de resistencias pull-up para buses I2C según velocidad y capacitancia.
Fórmula
Referencia: NXP I2C-bus specification and user manual, Rev. 7.0 (UM10204), §7.1
Cómo Funciona
Esta calculadora determina los valores óptimos de las resistencias de arrastre I2C para una comunicación de bus confiable en los modos Estándar (100 kHz), Rápido (400 kHz) y Fast Plus (1 MHz). Los ingenieros de hardware y los desarrolladores de sistemas integrados la utilizan para equilibrar los requisitos de tiempo de subida con el consumo de energía. Según la NXP UM10204 (la especificación oficial del I2C), las resistencias de tracción deben cumplir dos restricciones: R_min = (V_DD - V_OL)/I_OL (normalmente 1,5 kOhm a 3,3 V) y R_max = t_rise/(0,8473 x C_bus). Para un bus de 200 pF en modo 400 kHz, la especificación exige t_rise <= 300 ns, lo que arroja un R_max = 300 ns/(0,8473 x 200 pF) = 1,77 kOhm. Un pull-up de 4,7 kOhm, que se suele recomendar en los tutoriales, en realidad infringe la especificación del modo rápido cuando la capacitancia del bus supera los 85 pF. Los estudios sobre los fallos del I2C muestran que el 68% se debe a valores de tracción incorrectos que provocan infracciones en el tiempo de subida.
Ejemplo Resuelto
El diseño de un dispositivo portátil conecta 4 sensores I2C (25 pF cada uno) más una capacitancia de rastreo de 50 pF en un bus de 3,3 V que funciona en modo rápido de 400 kHz. Según la sección 7.1 del NXP UM10204: C_bus total = (4 x 25) + 50 = 150 pF. Resistencia máxima: R_max = t_rise/(0.8473 x C_bus) = 300 ns/(0.8473 x 150 pF) = 2.36 kOhm. Resistencia mínima: R_min = (V_DD - V_OL)/I_OL = (3,3 V - 0,4 V) /3 mA = 967 ohmios. Valor óptimo = sqrt (R_max x R_min) = sqrt (2360 x 967) = 1,51 kOhm. Seleccione el valor estándar de 1,5 kOhm (serie E24). Esto proporciona un tiempo de subida real de 200 ns (margen del 33%) y consume solo 1,93 mA por línea cuando se baja.
Consejos Prácticos
- ✓Según NXP AN10216-01, utilice 2,2 kOhm para buses de menos de 100 pF a 400 kHz, 1 kOhm para 200-400 pF y pull-ups activos de más de 400 pF
- ✓Mida el tiempo de subida real con un osciloscopio en los pines SDA/SCL: la especificación requiere de 20 a 300 ns para el modo rápido, de 20 a 120 ns para el modo rápido Plus
- ✓Para cables largos (>50 cm), añada resistencias de la serie de 100 ohmios en el maestro para limitar las reflexiones y reducir la EMI entre 6 y 10 dB según la guía de diseño I2C
Errores Comunes
- ✗Utiliza pull-ups de 10 kOhm (predeterminado en Arduino) a 400 kHz con una capacitancia de bus superior a 30 pF, lo que provoca tiempos de subida de más de 500 ns frente al máximo de 300 ns del NXP UM10204
- ✗Colocar dominadas tanto en la placa maestra como en la secundaria, reduce a la mitad la resistencia y duplica la corriente I_OL más allá del límite de 3 mA del dispositivo
- ✗Haciendo caso omiso de eso, Fast Mode Plus (1 MHz) requiere t_rise <= 120 ns, lo que exige pulsaciones de menos de 700 ohmios para un bus de 200 pF
Preguntas Frecuentes
Shop Components
As an Amazon Associate we earn from qualifying purchases.
Calculadoras relacionadas
Comms
Velocidad de Baudios UART
Calcula el divisor de baudios, velocidad real y error de baudios para interfaces UART/USART.
General
Constante de Tiempo RC
Calcula la constante de tiempo tau, frecuencia de corte y respuesta temporal de circuitos RC.
General
Ley de Ohm
Calcula tensión, corriente, resistencia y potencia usando la Ley de Ohm y la Ley de Joule.
Comms
Jitter Reloj
Calcula el presupuesto de temporización del árbol de reloj para diseños de FPGA y SoC.