Pourquoi I2C est-il conçu pour fonctionner avec des résistances pull-up et non des pull-down?


22

Je comprends que dans les lignes I2C, SCL et SDA utilisent des résistances de pull-up et les pilotes de broches sont des dispositifs NPN à collecteur ouvert qui peuvent conduire les broches à la terre. Cela donne à I2C l'avantage que le même bus peut maintenant être partagé avec plusieurs esclaves, et même si deux esclaves ou plus tentent accidentellement de conduire le bus en même temps, cela n'endommagera pas le système.

Mais cela peut également être fait en utilisant des pilotes de drain ouvert PNP et des résistances de retrait sur les lignes SDA et SCL. Des choses comme l'étirement de l'horloge et l'arbitrage multimaître peuvent également être réalisées avec cela.

La mise en œuvre actuelle du protocole I2C offre-t-elle des avantages par rapport à la mise en œuvre alternative suggérée ci-dessus?


1
Les transistors à collecteur ouvert semblaient être majoritaires dans les circuits intégrés dans les années 80.
PlasmaHH

9
@PlasmaHH Je pense que la raison en était que NPN (pour autant que je m'en souvienne vaguement) a une capacité de courant plus élevée par zone en raison de la plus grande mobilité des électrons dans le substrat, il est donc plus facile de construire des étages de sortie "forts" avec cela.
Marcus Müller

7
@ MarcusMüller En effet, c'était (et c'est toujours) vrai. Les NPN et les NMOS Fets sont "plus forts" lorsqu'ils ont la même taille. En CMOS, un facteur 2 à 3 est typique. Pour PNP vs NPN, cela dépend du processus de fabrication, mais presque toujours les PNP sont beaucoup plus difficiles et complexes que les NPN. Commencer également par un substrat dopé P (comme le font la plupart des processus) le souligne (de meilleurs NPN).
Bimpelrekkie

@Bimpelrekkie Je me souviens d'un facteur 2,3 de mon cours de physique du solide à ce jour :-)
winny

1
Si le bus I2C existant est accidentellement court-circuité à la terre pour une raison quelconque, vous ne tirerez que du courant de résistance de rappel. Avec la disposition complémentaire des haut-parleurs actifs et des résistances de descente, vous endommageriez les simples pilotes des premières années de l'I2C. Lorsque vous passez d'une carte à l'autre, un court-circuit au châssis est une considération. Mais ce n'est que l'une des nombreuses raisons pour lesquelles vous allez pousser bas et tirer haut, les autres ayant répondu ci-dessous.
TonyM

Réponses:


30

Sur le plan électrique, cela a du sens car la terre est la seule connexion commune à tous les périphériques d'un bus IIC. C'est beaucoup moins une restriction que de forcer l'alimentation à être la connexion commune à tous les appareils IIC, comme cela serait nécessaire si les lignes étaient entraînées haut et flottaient bas via des déroulements.

Notez que les appareils IIC n'ont pas tous besoin d'être alimentés à partir du même réseau ou de la même tension. Cela ne serait pas vrai si les deux lignes de bus devaient être entraînées à la seule tension d'alimentation commune.


5
Ce n'est pas mon downvote, et vous devez avoir autant d'années d'expérience I2C que moi, donc mon point ici est probablement un malentendu, mais: "Les appareils IIC n'ont pas tous besoin d'être alimentés à [...] la même tension " pourrait être vu comme impliquant que les appareils I2C alimentés en 5V et 3V (par exemple) pourraient partager le même bus I2C, sans composants ni précautions supplémentaires (puisque vous n'avez pas mentionné les traducteurs de niveau). Et bien sûr, ils ne peuvent pas le faire, car les seuils logiques I2C de chaque périphérique sont désormais référencés à leur propre Vcc. Peut-être que l'absence d'une mention explicite des traducteurs de niveau a provoqué le downvote?
SamGibson

13
En fonction des tractions et des broches d'E / S utilisées, les communications de type I2C peuvent fonctionner en douceur entre les appareils 5 V et 3,3 V. L'utilisation de tractions 10K à 5V, par exemple, permettrait d'utiliser des appareils 3,3V s'ils ont des entrées non bloquées tolérantes 5V ou s'ils peuvent tolérer 150uA dans leurs diodes de protection. Et l'utilisation de pullups à 3,3 V fonctionnera, au moins à des vitesses plus lentes, pour l'interfaçage avec des appareils 5 V qui ont un seuil d'entrée élevé qui est de 2,5 V ou moins.
supercat

7
@Sam: En fait, les appareils IIC 5 V et 3,3 V peuvent être sur le même bus IIC. Les appareils avec des niveaux de tension fixes indépendamment de leur tension d'alimentation sont spécifiquement mentionnés et sanctionnés dans la spécification IIC.
Olin Lathrop

5
Dans l'ancien document "Le bus I2C et comment l'utiliser" de Philips, la section 10.0 mentionne les seuils d'entrée fixes des premiers appareils I2C 5V (généralement NMOS). Il dit ensuite: " Les dispositifs de bus I2C avec des niveaux d'entrée liés au VDD doivent avoir une ligne d'alimentation commune à laquelle la résistance de rappel est également connectée " (mon gras). @supercat - vous avez mentionné: "Les appareils 5V qui ont un seuil d'entrée élevé qui est de 2,5V ou moins " Pouvez-vous m'aider en donnant un exemple d'un tel appareil? En lisant les anciens documents I2C, je ne trouve que des mentions d'un minimum fixe de 3V I2C Vih, pour ces vieux appareils 5V. Merci.
SamGibson

2
@SamGibson: Les appareils avec des niveaux d'entrée liés au VDD peuvent avoir besoin de fonctionner à partir de tensions qui se trouvent dans une certaine plage les unes des autres. Leur proximité dépend de la façon dont les tensions sont liées au VDD. La fiche technique Microchip pour le PIC16F877 (une partie de 5 V sélectionnée arbitrairement) répertorie V (IH) pour ses broches normales à 0,25 VDD + 0,8 V, bien que pour ses entrées de déclenchement Schmitt, elle serait beaucoup plus élevée. À VDD = 5,2 V, une entrée normale aurait un V (IH) spécifié de 2,1 volts; Je n'ai pas vu de spécification pour le matériel I2C V (IH), bien que le graphique de performance typique suggère qu'il se situe entre les entrées normales et ST.
supercat

24

Dans le bon vieux temps, les conducteurs TTL étaient beaucoup mieux à tirer un signal vers le bas que vers le haut. Par conséquent, des protocoles comme I2C, mais aussi des lignes d'interruption, une réinitialisation et d'autres, ont tous été implémentés à l'aide d'un pull-up avec pull-down distribué.


8
Dans les meilleurs temps modernes, il en va de même car c'est une propriété intrinsèque des semi-conducteurs. Aujourd'hui, il ne coûte tout simplement pas autant d'obtenir un transistor de rappel plus robuste pour gérer le même courant.
Arsenal

2
On m'a dit qu'avec CMOS, il est également beaucoup plus facile de se rapprocher de la tension du rail d'alimentation. Un autre «problème» où TTL se débattait. (Peut-être devrions-nous nous considérer chanceux car cela a permis au CMOS 3V3 de s'interfacer avec TTL)
Oldfart

14

Il est plus facile d'utiliser la terre comme référence commune parmi les sous-systèmes qui peuvent avoir des tensions d'alimentation variables. Si vous utilisez des transistors PNP pour atteindre une tension d'alimentation, tous les sous-systèmes doivent être connectés à la même alimentation.


8

Les bonnes réponses abondent ici, mais il y a aussi une autre raison.

Si l'état de repos du bus est au sol, il n'y a aucun moyen de savoir si le bus est connecté ou simplement suspendu dans l'espace.

Il est normal que le pull-up soit situé sur l'appareil maître. Les esclaves n'ont généralement pas de pull-up. En effet, le courant de pull-down qui serait nécessaire pour affirmer un niveau bas augmenterait avec le nombre de périphériques connectés au bus.

Un esclave, lorsqu'il est branché sur le bus, peut alors détecter que la ligne est tirée haut (en supposant qu'elle n'est pas utilisée) et savoir que le bus est réellement là et silencieux. Ce ne serait pas le cas avec un bus polarisé à la masse.


Afin de détecter le bus tiré haut, un esclave doit le tirer bas en premier lieu. Je ne sais pas pourquoi une procédure similaire ne serait pas possible avec la polarité opposée.
Dmitry Grigoryev

@DmitryGrigoryev pourquoi aurait-il besoin de tirer quelque chose qui est déjà haut bas?
Trevor_G

5

Si je comprends bien la question, un aspect est:

  • Pourquoi utilisez-vous des résistances de pull-up et des transistors NPN au lieu des résistances de pull-down et des transistors PNP?

Tout d'abord, vous devez noter que vous n'utilisez pas de transistors bipolaires (NPN, PNP) mais des MOSFET (qui existent en quatre variantes différentes).

Les appareils utilisant la variante " pull-up et NPN " utilisent une amélioration à canal n MOSFET d' . Parce que la source de ce MOSFET est connectée à la terre, la tension grille-source (contrôlant le flux de courant) est égale à la tension entre la grille et la terre. Le MOSFET peut donc être contrôlé à l'aide d'une tension comprise entre 0 et Vdd.

Il y aurait trois possibilités pour implémenter la variante " pull-down et PNP ":

  • Utilisation d'un MOSFET d'amélioration de canal p

    Sur un CI NMOS ou CMOS, les MOSFET à canal p avec des caractéristiques comparables (résistance, etc.) nécessitent plus d'espace que les MOSFET à canal n.

    En microélectronique, l'espace est de l'argent, donc les MOSFET à canal p sont évités si possible.

  • Utilisation d'un MOSFET d' amélioration à n canaux

    Cela nécessiterait que la sortie du circuit logique commandant le transistor ait une tension "FAIBLE" de la tension d'alimentation (par exemple + 5 V) et une tension "ÉLEVÉE" au-dessus de la tension d'alimentation (par exemple + 10 V lorsque le reste du circuit est alimenté). avec + 5V).

    La raison: la tension source-masse sera Vdd lorsque le MOSFET sera conducteur. La tension grille-source doit être positive, la tension entre la grille et la masse doit donc être encore plus élevée.

    Vous auriez besoin de deux alimentations en tension - et d'un circuit décalant la sortie du circuit logique de 0 ... + 5V à + 5V ... + 10V ...

  • Utilisation d'un appauvrissement du canal n MOSFET d'

    Malheureusement, je ne peux pas vous en dire beaucoup sur cette solution. Cependant, j'ai trouvé une page utilisant Google disant que les MOSFET d'appauvrissement sont plus difficiles à produire que les MOSFET d'amélioration et ils sont évités pour cette raison.

    Je sais par l'électronique de puissance (pas la microélectronique) que la variante "deux alimentations" décrite ci-dessus est même préférée aux MOSFET à épuisement. (Mais je ne peux pas vous dire pourquoi.)

    EDIT En utilisant des transistors MOSFET à canal N, vous auriez probablement besoin d'une tension négative (par exemple -5V), vous auriez donc également besoin de deux tensions d'alimentation ...


0

Il y a aussi un autre avantage supplémentaire à avoir des lignes de données communes de mise à la terre et de pull-up (par rapport au VCC et à la pull-down communs):

Même si l'intention initiale était de connecter des périphériques sur le même PCB à une portée de quelques pouces seulement, cela a été un succès suffisant, il n'est donc pas rare d'avoir les longues lignes de quelques pieds et de connecter des "périphériques" qui pourraient être des ordinateurs ou quelque chose d'égale complexité, avec certains appareils ayant leurs propres sources d'alimentation (de qualité différente, disons que vous connectez quelque chose alimenté par une prise murale avec quelque chose alimenté par batterie). Il est préférable que la connexion fonctionne "au moins bien" même dans des conditions non idéales et hors spécifications.

Et beaucoup de ces appareils connectés peuvent être connectés d'une manière ou d'une autre par d'autres moyens, alors seulement la communication I2C. Habituellement, lorsque vous connectez des appareils ensemble, vous le connectez aveccommon ground - parfois dans le cadre d'autres fonctions, parfois simplement parce qu'il est monté sur un boîtier métallique et que les appareils sont également reliés à la terre avec le boîtier (ou avec un refroidisseur commun ou quelque chose comme ça) ou il peut y avoir être un câble blindé avec un blindage mis à la terre à l'intérieur - qui relie également les terres.

Si vous connectez également directement les lignes électriques (VCC) de ces appareils, vous aurez des problèmes lorsque ces lignes seront naturellement sur une tension différente (bien sûr, cela peut dire 5 V ici et là, mais en fonction de la construction et des tolérances des pièces des sources d'alimentation, il pourrait également être de 4,9 V ou 5,2 V ou même changer, s'il est alimenté par batterie et fonctionne parfois avec certains moteurs, ce qui fait chuter et augmenter la puissance au fil du temps).

Dans un tel cas, il y a effectivement un court-circuit entre ces sources d'alimentation de la partie A Volt et selon les sources (et la résistance des voies), il pourrait y avoir des courants relativement élevés entraînant non seulement des pertes d'énergie et une augmentation de la chaleur, mais peut-être même des dommages ( ou raccourcir la durée de vie) de certaines de ces sources. Ce qui n'est pas bon.

La mise à la terre commune et les tractions évitent de tels problèmes - la terre est mise à la terre et les résistances de traction ne permettent qu'un très petit courant croisé même si le VCC diffère beaucoup des appareils.


1
C'est essentiellement la même chose que la réponse de Dave Tweed.
Janka

-2

Vous n'avez pas à envoyer autant de puissance via la puce, si elle est tirée vers le haut.

Parce que la puce ne pilote rien, elle crée simplement un court-circuit pour amener le bus à 0 et fait une ouverture pour le ramener à 1.

S'il était abaissé, vous devrez envoyer de l'énergie via la puce pour conduire le bus à 1. Si le bus se trouve être un court-circuit accidentel, cela pourrait être beaucoup d'énergie que vous passez à travers cette puce pour essayer de le pousser. jusqu'à 1.

Avertissement: je suis un EE assez moche à ce stade.


3
Bienvenue à EE.SE. " Vous n'avez pas à envoyer autant de puissance à travers la puce, si elle est tirée vers le haut. " Si les résistances pull-up et pull-down sont de la même taille, alors les courants seront les mêmes. La traction nécessitera que le courant provienne de la puce entraînée et s'enfonce dans la puce de conduite. La descente nécessitera que le courant provienne de la puce d'entraînement et qu'il soit coulé par la puce entraînée. Un court-circuit accidentel pourrait être à V + ou à la masse.
Transistor
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.