I2C: appareils 3,3 V et 5 V sans décalage de niveau sur le bus 3,3 V?

12

ai-je vraiment besoin d'un décalage de niveau si j'utilise des appareils alimentés en 5 V sur un bus I2C qui a des tractions à 3,3 V? À ma connaissance, les appareils ne feront que tirer les lignes (SDA, SCL) bas (vers la terre) et ne conduiront jamais leur tension d'alimentation au bus. Donc, je ne vois pas de raison pour un changement de niveau tant que tous les appareils détectent la tension logique des tractions (3,3 V) comme étant élevée. Cela devrait être le cas avec des appareils utilisant 5V comme alimentation.

Dans mon cas, j'ai un circuit intégré dont les entrées ne sont pas tolérantes à 5 V en tant que maître et je pouvais alimenter mes esclaves avec 3,3 V, mais l'utilisation de 5 V est plus facile dans mon circuit et permet des fréquences d'horloge (internes) plus élevées pour les esclaves.

Jannis
la source
2
Donc, pour résumer les choses: - Aucune puce n'est en danger lors de l'utilisation d'appareils avec 5 V comme Vdd sur un bus I2C en utilisant des tractions à 3,3 V - Cela peut ou non fonctionner, selon les tolérances, la conception de la puce interne, ...
Jannis
2
Correct - aucun danger de dommages, juste aucune garantie de bon fonctionnement.
Adam Lawrence

Réponses:

15

Selon la version 4 de la spécificationI2C ,

"En raison de la variété des différents dispositifs technologiques (CMOS, NMOS, bipolaires) qui peuvent être connectés au bus I2C, les niveaux du" 0 "logique (LOW) et du" 1 "(HIGH) ne sont pas fixes et dépendent de le niveau associé de VDD. Les niveaux de référence d'entrée sont définis comme 30% et 70% de VDD; VIL est de 0,3 VDD et VIH est de 0,7 VDD. Voir la figure 38, chronogramme. Certains niveaux d'entrée des périphériques hérités ont été fixés à VIL = 1,5 V et VIH = 3,0 V, mais tous les nouveaux appareils nécessitent cette spécification de 30% / 70%. Voir la section 6 pour les spécifications électriques. " (page 9)

Plus profondément dans la spécification, vous verrez que cette est la haute tension logique minimale :0.7×VDD

extrait de la spécification NXP I2C rev.  4

Pour votre système 5V:

0.7×5V=3.5V

0.3×5V=1.5V

Pour moi, le pull-up de 3,3 V semble marginal, surtout si l'un de vos appareils 5V utilise la «nouvelle» norme de pour la logique ÉLEVÉE.0.7×VDD

Votre kilométrage peut varier, mais il est toujours préférable de respecter les spécifications dans la mesure du possible ...

Adam Lawrence
la source
Merci pour le nettoyage stevenvh. Je me précipitais hier.
Adam Lawrence
11

La réponse de Cees est incorrecte, en particulier le "toujours" et "tout". Les E / S du microcontrôleur peuvent avoir besoin d'au moins 0,6 Vdd pour un niveau élevé, d'autres ont un minimum de 0,7 Vdd, et comme Madmanguruman indique que c'est la norme pour I2C. 0,7 Vdd est 3,5 V avec une alimentation de 5 V, donc 3,3 V est déjà trop faible.

Mais c'est encore pire. Les régulateurs de tension ont souvent une tolérance de 5% sur leur tension de sortie nominale, donc le pire des cas 5 V peut être 5,25 V, puis 0,7 Vdd devient 3,675 V. Entrée minimale pour un niveau élevé. Si le 3,3 V a une tolérance négative de 5%, alors 3,3 V devient 3,135 V. Donc, avec les tolérances prises en compte, l'entrée peut très bien être d'un demi-volt trop faible, ou 15%.

Donc,

Donc, je ne vois pas de raison pour un changement de niveau tant que tous les appareils détectent la tension logique des tractions (3,3 V) comme étant élevée. Cela devrait être le cas avec des appareils utilisant 5V comme alimentation.

est une conclusion inopportune. Vérifiez toujours les fiches techniques et effectuez le calcul.

stevenvh
la source
-1

J'ai l'impression que les autres réponses n'ont pas vraiment répondu à la question de Jannis. Il a posé des questions sur l'utilisation d'appareils 5V sur un bus 3,3V (probablement 3,3V MCU). Je suis d'accord que les tractions liées à 3,3 V seront correctes, par exemple sans danger pour le périphérique maître, car les broches SDA / SCL ne tireront que vers le bas, comme il l'a mentionné. Attention, les esclaves et le maître devront partager une masse commune (équipotentielle des broches Vss) afin de protéger le MCU contre les surtensions, mais cela allait probablement être le cas de toute façon. La méthode de Jannis devrait donc fonctionner, sans décalage de niveau.

DavidW_10MI
la source
2
Bienvenue!! J'ai remarqué que vous êtes un nouveau contributeur, alors vous ne vous êtes peut-être pas rendu compte que vous fournissez une réponse à une question datant de plus de six ans. Le système soulève constamment de vieilles questions afin que celles-ci soient révisées, vous devez garder cela à l'esprit.
Edgar Brown