Quelle est la longueur maximale de câble pouvant être utilisée pour connecter deux périphériques I2C (maître I2C -> esclave I2C)?
Oui, je sais qu'I2C est vraiment conçu pour la communication intra-carte. Un "objectif de conception" m'a été confié: utiliser un bus I2C commun pour plusieurs esclaves I2C afin de prendre en charge une démonstration.
Par souci de clarté, supposons le débit de bus I2C standard de 100 kHz.
Réponses:
Pour le mode rapide et l’extension de la résistance, la capacité doit être inférieure à 200 pF, conformément à la spécification de ce document NXP I2C-bus et au manuel de l’utilisateur .
Avec les sources de courant actuelles, vous pouvez atteindre 400 pF, mais pas avec les résistances.
Si votre fil mesure 20pF / 30cm et que vous avez encore 50pF de capacité parasite et d'entrée, vous êtes limité à 2,25m de longueur de câble. Différentes hypothèses conduiront à des nombres différents.
la source
Les longueurs insensées comme 10,25 et 100 m sont parfaitement possibles, et j’utilise souvent la méthode (avec UART, pas avec I2C, mais avec la méthode) lorsque j’ai besoin de rassembler des éléments rapidement. Ce n'est pas exactement la meilleure façon, cependant.
La clé est de connaître votre seuil de tension d'entrée. Assurez-vous que la chute de tension dans le fil de terre est bien inférieure à cela, sinon un émetteur à un potentiel de terre élevé ne sera pas en mesure de tirer la tension suffisamment bas. Manque de tolérance pour les compensations au sol IMHO est la principale raison d'utiliser RS485 ou des émetteurs-récepteurs de capacité (I2C sur CAN est mentionné dans quelques notes d'application).
Idéalement, tous les appareils auront leur propre verrue murale et leur propre batterie et aucun courant ne sera envoyé sur le fil de terre entre les appareils.
Mais prenons CAT5 par exemple. CAT5 ne peut pas être supérieur à 52 pf / m, ou bien ce n'est pas CAT5.
100 m de câble 52pf ont une capacité de 5200pf ou 5.2nf.
5,2n fois 20kohms (pullup) donne une constante de temps d'environ 104 microsecondes. Cela limite la vitesse à environ 10 kHz environ.
En utilisant 2,2 Kohm Pullup, vous pourriez probablement atteindre 100kHz.
J'ai entendu dire que les appareils devraient avoir une résistance sur SDL et SCK, en raison de la grande charge capacitive qu'ils entraînent, de l'ordre de 180 ou 200 ohms.
Mais honnêtement, I2C n’est pas du tout le chemin à parcourir pour les longues distances. Les émetteurs-récepteurs CAN ou RS485 utilisés avec un UART normal sont une solution robuste offrant une très bonne protection contre les défaillances, la résistance aux décharges électrostatiques, la vitesse, la distance, etc., pour un coût d'environ un dollar par puce, les décalages au sol importent peu libre de transporter le pouvoir avec des données.
Le seul inconvénient est qu'un émetteur-récepteur de boîte peut atteindre 70 mA en émission et 1 ou 2 mA en écoutant. I2C ou UART TTL direct peuvent être utiles dans les situations de très faible consommation, mais prenez en compte le temps que vous passez réellement à envoyer.
la source
Je travaille pour une entreprise fabriquant des capteurs USB. La plupart d'entre elles sont basées sur des puces de capteur I2C. Ces périphériques peuvent être divisés en deux. Vous pouvez donc installer la partie CPU à un endroit et la partie capteur à un autre. Nous avons effectué de nombreux tests sur la connexion I2C entre le processeur de l'appareil et les capteurs I2C. À 100 kHz, avec un bon protocole de récupération d’erreur, il est facile d’atteindre 25 m à l’aide de câbles de base. Nous avons même réussi à atteindre 100 m une fois avec un câble CAT5.
la source
Quelque chose comme le P82B96 de NXP pourrait être utilisé pour modifier les niveaux de tension sur le bus, permettant ainsi des distances beaucoup plus longues.
La fiche technique contient des exemples de longueurs de câble I2C de 3m, 25m, 100m et 250m.
Il y a d'autres puces qui ont des fonctionnalités similaires.
la source
IIC est un protocole synchrone et, en tant que tel, il peut être exécuté arbitrairement lentement pour répondre aux exigences du système en matière de distance et de bruit.
Il existe de nombreux exemples d'utilisation d'IIC sur un câble, depuis ACCESS.bus dans les années 1990 jusqu'à la manière dont il est utilisé aujourd'hui pour récupérer les informations EDID à partir d'écrans vidéo.
la source