MCU.TEC I2C Cálculo dos Resistores de Pull-Up para Barramentos I²C

Cálculo dos Resistores de Pull-Up para Barramentos I²C

O barramento I²C (Inter-Integrated Circuit) é um protocolo de comunicação serial de dois fios, composto pelas linhas SDA (dados) e SCL (clock), projetado para comunicação entre dispositivos integrados. Utilizando um sistema de saída open-drain, os dispositivos I²C apenas puxam a linha para nível baixo (LOW), enquanto resistores externos de pull-up garantem o retorno da linha ao nível alto (HIGH) quando nenhum dispositivo está transmitindo. Sem esses resistores, a linha flutuaria, tornando a comunicação instável.

A Influência do Resistor no Tempo de Resposta

Como o barramento depende da capacitância da linha (Cb) e do resistor de pull-up (Rp), o tempo necessário para a linha retornar ao nível alto após ser puxada para o nível baixo segue a constante de tempo RC (produto da resistência e capacitância). Se o valor de Rp for muito alto, o tempo de subida da tensão pode ultrapassar os limites da especificação do protocolo I²C, causando falhas de comunicação.

A resposta da tensão em um circuito RC ao aplicar uma etapa de tensão VCCV_{CC}VCC​ pode ser expressa por: V(t)=VCC(1−e−t/RC)V(t) = V_{CC} \left( 1 – e^{-t / RC} \right)V(t)=VCC​(1−e−t/RC)

Com base nisso, o tempo de subida trt_rtr​ da tensão, definido entre 30% e 70% de VCCV_{CC}VCC​, pode ser calculado como: tr=0,8473⋅RP⋅Cbt_r = 0{,}8473 \cdot R_P \cdot C_btr​=0,8473⋅RP​⋅Cb​

Esse tempo precisa ser inferior ao máximo especificado para o modo I²C utilizado (Standard, Fast ou Fast Mode Plus)I2C Bus Pullup Resistor….

Fórmulas para o Cálculo dos Resistores de Pull-Up

1. Resistor Mínimo (RP_min)

Evita que os dispositivos no barramento não consigam forçar a linha para nível baixo. É dado por: \[R_{P(min)} = \frac{V_{CC} – V_{OL(max)}}{I_{OL}}\]

Onde:

  • \(V_{OL(max)}\) é a tensão máxima ainda reconhecida como nível lógico baixo (tipicamente 0,4V),
  • \(I_{OL}\)​ é a corrente máxima que o dispositivo pode absorver no nível lógico baixo.

2. Resistor Máximo (\(RP_max\))

Garante que o tempo de subida esteja dentro das especificações do protocolo. Calculado por: \[R_{P(max)} = \frac{t_r}{0{,}8473 \cdot C_b}\]

Onde:

  • \(t_r\)​ é o tempo de subida permitido (por exemplo, 300ns para Fast Mode),
  • \(C_b\)​ é a capacitância da linha em farads (por exemplo, 200pF = 200 x 10⁻¹² F).

Exemplo de Cálculo

Para uma comunicação I²C em Fast Mode com os seguintes parâmetros:

  • \(V_{CC} = 3{,}3V\)
  • \(C_b = 200pF\)
  • \(t_r = 300ns\)
  • \(V_{OL(max)} = 0{,}4V\)
  • \(I_{OL} = 3mA\)

Temos:

\(RP_min\): \[R_{P(min)} = \frac{3{,}3 – 0{,}4}{3 \cdot 10^{-3}} = 966{,}67 \ \Omega\]

\(RP_max\): \[R_{P(max)} = \frac{300 \cdot 10^{-9}}{0{,}8473 \cdot 200 \cdot 10^{-12}} \approx 1{,}77k\Omega\]

Portanto, o valor ideal do resistor de pull-up deve estar entre 967 Ω e 1,77 kΩI2C Bus Pullup Resistor….

Considerações Finais

Ao projetar sistemas com I²C, é fundamental balancear consumo de energia e velocidade de comunicação. Resistores menores aceleram a comunicação (tempo de subida menor), mas aumentam o consumo de corrente quando a linha está em nível baixo. Já resistores maiores reduzem esse consumo, mas podem comprometer a integridade do sinal.

Por isso, a escolha do resistor ideal deve sempre considerar:

  • Tensão de operação;
  • Capacitância total da linha (cabeamento + CI’s);
  • Modo de operação I²C (Standard, Fast ou Fast Plus);
  • Corrente máxima que os dispositivos podem suportar.

Referência:

  • https://www.ti.com/lit/an/slva689/slva689.pdf?ts=1747353571271&ref_url=https%253A%252F%252Fwww.google.com%252F
0 0 votos
Classificação do artigo
Inscrever-se
Notificar de
guest
0 Comentários
mais antigos
mais recentes Mais votado
Feedbacks embutidos
Ver todos os comentários
0
Adoraria saber sua opinião, comente.x