Nouvelles:

Bienvenue au Forum de discussion Électro-Bidouilleur! Inscrivez-vous pour participer aux discussions!: 
https://forum.bidouilleur.ca/index.php?action=signup Les demandes d'inscription sont révisées quotidiennement.

Menu principal

Question de calcul de résistance sur bus I2C

Démarré par thanat0s, Juillet 02, 2020, 08:21:50 PM

« précédent - suivant »

thanat0s

J'ai découvert dans la video EB_#389 Projet - Interface PC pour Voltmètre Fluke 8920A, Partie 4: Schéma et Mécanique (6:09) la necessité de poser une résistance sur le bus I2C (sda) entre "N" devices pour éviter des pbm de surcharge si plusieurs devices parlent en meme temps (si j'ai bien compris).

Cependant EB, parle d'une valeur "basse :)". Est-ce que quelqu'un pourrait m'indiquer comment on calcul la dite resistance notament sur un bus avec plusieurs devices I2C.

Faut t'Il s'assurer de rester en tous cas dans le courant max des devices I2C comme ici pour un BMP280 IDDT ?
https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmp280-ds001.pdf

C'est obscur :)


Yffig

#1
Bonsoir,

Le bus I²C a subi qq variantes au cours du temps avec l'augmentation de sa vitesse de transfert. La recommandation de Bertrand concerne (je pense) plus particulièrement les versions "Haute Vitesse": Fm, Fm+ et UFm (éventuellement mixées avec la standard).
Pour savoir de quoi il en retourne, il vaut mieux s'adresser à  NXP (anciennement Philips) qui est la source du standard industriel:
https://www.nxp.com/docs/en/user-guide/UM10204.pdf
Au §5 (page 35 et +) sont décrites les différentes vitesses du bus, puis en page 37 avant dernier §, la possibilité (ie option) de résistances série Rs sur les lignes SDA et SCL. Pas de valeurs précises ou de calculs ne sont donnés, Bertrand de son côté parle de "bonnes pratiques" (doux euphémisme pour signifier qu'il vaut mieux en mettre sans que l'on sache trop pourquoi, ni comment les calculer...). La valeur qu'il prend est de 220 Ω... valeur suffisamment faible pour que les capacités grille source des MOS (et de câblage) n'influent pas trop sur le temps de montée/descente des signaux et suffisamment élevée pour que la mise en conflit de deux sorties (cas SDA) ne soit préjudiciable à  l'un ou l'autre des boîtiers.
[EDIT 03/07]: page 58, § 7.3 NXP est plus loquace sur la valeur de ces Rs en prenant une valeur typique de 300 Ω et  tu as aussi un graphe des valeurs max en fonction des résistances de Pull-up Rp et de la tension d'alim.

(A titre personnel, je pratique (et je ne suis pas le seul...) la mise en // de 2 ou 3 portes CMOS type 74HC14 à  10 MHz sans aucun pb parce que je sais que les Rds-ON de ces boitiers sont de plusieurs 10-aines d'Ω, mais on peut préférer assurer surtout quand l'un de ces périphériques est soit cher soit difficile à  remplacer !)

Bonne soirée

Yffig

Électro-Bidouilleur

Citation de: thanat0s le Juillet 02, 2020, 08:21:50 PM
J'ai découvert dans la video EB_#389 Projet - Interface PC pour Voltmètre Fluke 8920A, Partie 4: Schéma et Mécanique (6:09) la necessité de poser une résistance sur le bus I2C (sda) entre "N" devices pour éviter des pbm de surcharge si plusieurs devices parlent en meme temps (si j'ai bien compris).
Sur un bus i2c "parfait" (rencontrant toutes les spécifications), on n'a pas à  ajouter cette résistance série sur SDA car les deux extrémités ont une sortie à  drain ouvert; il n'y a pas de risque de conflit de courant car le seul niveau fort est le niveau bas, et le niveau haut est provoqué par des résistances pullups. Mais on voit beaucoup de bus i2c "simulés" par micro-contrôleur, et donc n'ayant pas cette sortie à  drain ouvert. Pour ne pas prendre de risque, je préfère ajouter une résistance en série, juste au cas... Yffig a bien expliqué le compromis de valeur choisie.

thanat0s