Skip to content
RFrftools.io
Comms

Calculadora de Resistencia Pull-up I2C

Calcula el valor óptimo de resistencias pull-up para buses I2C según velocidad y capacitancia.

Loading calculator...

Fórmula

Rmax=tr0.8473Cbus,Rmin=VDDVOLIOL,Rrec=RminRmaxR_{max} = \frac{t_r}{0.8473 \cdot C_{bus}}, \quad R_{min} = \frac{V_{DD} - V_{OL}}{I_{OL}}, \quad R_{rec} = \sqrt{R_{min} \cdot R_{max}}

Referencia: NXP I2C-bus specification and user manual, Rev. 7.0 (UM10204), §7.1

R_{max}Resistencia máxima a la tracción (límite de tiempo de subida) (Ω)
R_{min}Resistencia mínima a la tracción (límite de corriente de disipación) (Ω)
R_{rec}Extracción recomendada (media geométrica) (Ω)
t_rTiempo máximo de subida para el modo de velocidad (ns)
C_{bus}Capacitancia total del bus (pF)
V_{DD}Tensión de alimentación (V)
V_{OL}Salida máxima: baja tensión (0,4 V) (V)
I_{OL}Corriente de disipación (3 mA estándar/rápido; 20 mA fast-plus) (A)

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

I2C utiliza salidas de drenaje abierto según el NXP UM10204, lo que significa que los dispositivos solo pueden utilizar líneas BAJAS. Los pull-ups proporcionan el estado ALTO al cargar la capacitancia del bus a través de R. Sin ellos, el bus flota y la comunicación falla el 100% del tiempo.
La capacitancia y la resistencia forman una constante de tiempo RC. A 400 kHz, C_bus = 200 pF requiere R <= 1,77 kOhm para lograr un t_rise < 300 ns. Cada 50 pF adicional reduce la R máxima en aproximadamente 400 ohmios. La especificación I2C limita la capacitancia total del bus a 400 pF.
No. El modo estándar (100 kHz) permite t_rise = 1000 ns, lo que permite 5,9 kOhm a 200 pF. El modo rápido (400 kHz) requiere t_rise = 300 ns, lo que limita R a 1,77 kOhm. El modo rápido Plus (1 MHz) requiere t_rise = 120 ns, lo que limita R a 710 ohmios con la misma capacitancia.
El tiempo de subida supera los límites de especificación, lo que provoca retrasos en el tiempo, NACK y daños en los datos. A 10 kOhm y 200 pF, el tiempo de subida es de 1,7 microsegundos, es decir, 5,6 veces más lento que el límite de 300 ns del modo rápido, lo que se traduce en tasas de error de transacción del 15 al 30%.
Seleccione la media geométrica de R_min y R_max para obtener un margen óptimo. En el caso de los dispositivos que funcionan con baterías, desvíese hacia una R más alta para reducir la corriente de reposo (cada línea dibuja V_DD/R cuando está LOW). Una conexión de 2,2 kOhm a 3,3 V consume 1,5 mA frente a 3,3 mA a 1 kOhm.

Shop Components

As an Amazon Associate we earn from qualifying purchases.

USB-UART Adapter

USB to serial adapter for protocol debugging and flashing

USB Logic Analyzer

8-channel USB logic analyzer for capturing digital bus traffic

Calculadoras relacionadas