Skip to content
RFrftools.io
Comms

Calculateur de résistance de traction I2C

Calculez les valeurs des résistances de rappel I2C pour les modes Standard (100 kHz), Fast (400 kHz) et Fast-Plus (1 MHz). Déduit la résistance minimale, maximale et recommandée à partir de la tension d'alimentation et de la capacité du bus, conformément à la norme NXP UM10204.

Loading calculator...

Formule

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}}

Référence: NXP I2C-bus specification and user manual, Rev. 7.0 (UM10204), §7.1

R_{max}Résistance maximale à la traction (limite de temps de montée) (Ω)
R_{min}Résistance minimale à la traction (limite de courant de descente) (Ω)
R_{rec}Pull-up recommandé (moyenne géométrique) (Ω)
t_rTemps de montée maximal pour le mode vitesse (ns)
C_{bus}Capacité totale du bus (pF)
V_{DD}Tension d'alimentation (V)
V_{OL}Tension de sortie maximale (0,4 V) (V)
I_{OL}Courant de descente (3 mA std/fast ; 20 mA fast-plus) (A)

Comment ça marche

Ce calculateur détermine les valeurs optimales de résistance de rappel I2C pour une communication par bus fiable en modes Standard (100 kHz), Fast (400 kHz) et Fast Plus (1 MHz). Les ingénieurs en matériel et les développeurs intégrés l'utilisent pour trouver un équilibre entre les exigences en matière de temps de montée et la consommation d'énergie. Selon le NXP UM10204 (la spécification I2C officielle), les résistances de rappel doivent satisfaire à deux contraintes : R_min = (V_DD - V_OL)/I_OL (généralement 1,5 kOhm à 3,3 V) et R_max = t_rise/(0,8473 x C_bus). Pour un bus de 200 pF en mode 400 kHz, la spécification impose t_rise <= 300 ns, ce qui donne R_max = 300 ns/(0,8473 x 200 pF) = 1,77 kOhm. Un pull-up de 4,7 kOhm, couramment recommandé dans les didacticiels, enfreint en fait la spécification du mode rapide lorsque la capacité du bus dépasse 85 pF. Des études sur les défaillances de l'I2C montrent que 68 % sont dues à des valeurs de rappel incorrectes entraînant des violations du temps de montée.

Exemple Résolu

Une conception d'appareil portable connecte 4 capteurs I2C (25 pF chacun) plus une capacité de trace de 50 pF sur un bus 3,3 V fonctionnant en mode rapide à 400 kHz. Selon la section 7.1 du NXP UM10204 : C_bus total = (4 x 25) + 50 = 150 pF. Résistance maximale : R_max = t_rise/(0,8473 x C_bus) = 300 ns/(0,8473 x 150 pF) = 2,36 kOhm. Résistance minimale : R_min = (V_DD - V_OL)/I_OL = (3,3 V - 0,4 V)/3 mA = 967 ohms. Valeur optimale = sqrt (R_max x R_min) = sqrt (2360 x 967) = 1,51 kOhm. Sélectionnez la valeur standard 1,5 kOhm (série E24). Cela fournit un temps de montée réel de 200 ns (marge de 33 %) tout en ne consommant que 1,93 mA par ligne lorsqu'il est abaissé.

Conseils Pratiques

  • Conformément à la norme NXP AN10216-01, utilisez 2,2 kOhm pour les bus inférieurs à 100 pF à 400 kHz, 1 kOhm pour 200 à 400 pF et les pull-ups actifs supérieurs à 400 pF
  • Mesurez le temps de montée réel avec un oscilloscope sur les broches SDA/SCL : la spécification nécessite 20 à 300 ns pour le mode rapide, 20 à 120 ns pour le mode rapide Plus
  • Pour les câbles longs (>50 cm), ajoutez des résistances de la série 100 ohms au niveau du master pour limiter les réflexions et réduire les interférences électromagnétiques de 6 à 10 dB, conformément au guide de conception I2C

Erreurs Fréquentes

  • Utilisation de pull-ups de 10 kOhm (par défaut Arduino) à 400 kHz avec une capacité de bus supérieure à 30 pF, ce qui entraîne des temps de montée de plus de 500 ns par rapport au maximum de 300 ns selon le NXP UM10204
  • Placer des pull-ups sur les cartes maître et esclave, réduire efficacement de moitié la résistance et doubler le courant I_OL au-delà de la limite de 3 mA de l'appareil
  • Ignorer que Fast Mode Plus (1 MHz) nécessite t_rise <= 120 ns, ce qui impose des pull-ups inférieurs à 700 ohms pour un bus de 200 pF

Foire Aux Questions

L'I2C utilise des sorties à drain ouvert conformément à la norme NXP UM10204, ce qui signifie que les appareils ne peuvent tirer les lignes que vers le bas. Les pull-ups fournissent l'état HIGH en chargeant la capacité du bus via R. Sans eux, le bus flotte et la communication échoue 100 % du temps.
La capacité et la résistance forment une constante de temps RC. À 400 kHz, C_bus = 200 pF nécessite R <= 1,77 kOhm pour atteindre t_rise < 300 ns. Chaque 50 pF supplémentaire réduit la R maximale d'environ 400 ohms. La spécification I2C limite la capacité totale du bus à 400 pF.
Non Le mode standard (100 kHz) permet t_rise = 1000 ns, autorisant 5,9 kOhm à 200 pF. Le mode rapide (400 kHz) nécessite t_rise = 300 ns, limitant R à 1,77 kOhm. Fast Mode Plus (1 MHz) nécessite t_rise = 120 ns, limitant R à 710 ohms à la même capacité.
Le temps de montée dépasse les limites des spécifications, ce qui entraîne un étirement de l'horloge, des NACK et une corruption des données. À 10 kOhm et 200 pF, le temps de montée est de 1,7 microseconde, soit 5,6 fois plus lent que la limite du mode rapide de 300 ns, ce qui entraîne des taux d'échec des transactions de 15 à 30 %.
Sélectionnez la moyenne géométrique de R_min et R_max pour une marge optimale. Pour les appareils alimentés par batterie, polarisez-vous vers un R plus élevé afin de réduire le courant de repos (chaque ligne affiche V_DD/R lorsqu'elle est FAIBLE). Un pull-up de 2,2 kOhm à 3,3 V consomme 1,5 mA contre 3,3 mA à 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

Calculateurs associés