Calculadora de resistores pull-up I2C
Calcule os valores do resistor pull-up I2C para os modos Padrão (100 kHz), Rápido (400 kHz) e Fast-Plus (1 MHz). Deriva a resistência mínima, máxima e recomendada da tensão de alimentação e da capacitância do barramento de acordo com o NXP UM10204.
Fórmula
Referência: NXP I2C-bus specification and user manual, Rev. 7.0 (UM10204), §7.1
Como Funciona
Esta calculadora determina os valores ideais do resistor pull-up I2C para comunicação de barramento confiável nos modos Padrão (100 kHz), Rápido (400 kHz) e Fast Plus (1 MHz). Engenheiros de hardware e desenvolvedores incorporados o usam para equilibrar os requisitos de tempo de subida com o consumo de energia. De acordo com a NXP UM10204 (a especificação oficial da I2C), os resistores pull-up devem satisfazer duas restrições: R_min = (V_DD - V_OL)/I_OL (normalmente 1,5 kOhm a 3,3 V) e R_max = t_rise/(0,8473 x C_bus). Para um barramento de 200 pF no modo 400 kHz, a especificação exige t_rise <= 300 ns, produzindo R_max = 300 ns/(0,8473 x 200 pF) = 1,77 kOhm. Um pull-up de 4,7 kOhm, comumente recomendado em tutoriais, na verdade viola a especificação do Modo Rápido quando a capacitância do barramento excede 85 pF. Estudos de falhas de I2C mostram que 68% resultam de valores de pull-up incorretos que causam violações no tempo de subida.
Exemplo Resolvido
Um design de dispositivo vestível conecta 4 sensores I2C (25 pF cada) mais capacitância de rastreamento de 50 pF em um barramento de 3,3 V operando no modo rápido de 400 kHz. De acordo com a seção 7.1 do NXP UM10204: Total de C_bus = (4 x 25) + 50 = 150 pF. Resistência máxima: R_max = t_rise/(0,8473 x C_bus) = 300 ns/(0,8473 x 150 pF) = 2,36 kOhm. Resistência mínima: R_min = (V_DD - V_OL) /I_OL = (3,3V - 0,4V) /3 mA = 967 Ohm. Valor ideal = sqrt (R_max x R_min) = sqrt (2360 x 967) = 1,51 kOhm. Selecione o valor padrão de 1,5 kOhm (série E24). Isso fornece um tempo de subida real de 200 ns (margem de 33%) enquanto extrai apenas 1,93 mA por linha quando puxado para baixo.
Dicas Práticas
- ✓De acordo com o NXP AN10216-01, use 2,2 kOhm para barramentos abaixo de 100 pF a 400 kHz, 1 kOhm para 200-400 pF e flexões ativas acima de 400 pF
- ✓Meça o tempo real de subida com o osciloscópio nos pinos SDA/SCL: a especificação requer 20-300 ns para o Modo Rápido, 20-120 ns para o Modo Rápido Plus
- ✓Para cabos longos (>50 cm), adicione resistores da série 100 Ohm no mestre para limitar os reflexos e reduzir a EMI em 6 a 10 dB de acordo com o guia de design I2C
Erros Comuns
- ✗Usando pull-ups de 10 kOhm (padrão do Arduino) a 400 kHz com capacitância de barramento de >30 pF, causando tempos de subida de mais de 500 ns versus o máximo de 300 ns por NXP UM10204
- ✗Colocar flexões nas placas principal e secundária, reduzindo efetivamente a resistência pela metade e dobrando a corrente I_OL além do limite de 3 mA do dispositivo
- ✗Ignorando que o Fast Mode Plus (1 MHz) requer t_rise <= 120 ns, exigindo flexões abaixo de 700 Ohm para um barramento de 200 pF
Perguntas Frequentes
Shop Components
As an Amazon Associate we earn from qualifying purchases.
Calculadoras relacionadas
Comms
Taxa de transmissão UART
Calcule o tempo de quadro UART, a taxa de transferência e o divisor de registro USART BRR a partir da taxa de transmissão, formato de dados e frequência do relógio MCU. Identifique o erro da taxa de transmissão para uma comunicação serial confiável.
General
Constante de tempo RC
Calcule a constante de tempo do circuito RC τ, o tempo de carregamento para 63,2% e 99% e a frequência de corte de −3dB. Essencial para o projeto do filtro e do circuito de temporização.
General
Ohm
Calcule tensão, corrente, resistência e potência usando Ohm
Comms
Jitter Clock
Calcule o orçamento de temporização da árvore de clock para projetos de FPGA e SoC.