Comment connecter plusieurs périphériques d'interface i2c en une seule broche A4 (SDA) et A5 (SCL) sur Arduino?

32

Je veux ajouter un module d'horloge en temps réel à mon petit projet. Je veux afficher l'heure et la date sur mon module LCD i2c 2x16 existant.

Le module d'horloge en temps réel de l'interface i2c et le module LCD 2x16 utilisent les mêmes broches A4 (SDA) et A5 (SCL) sur Arduino Uno. Après des heures de recherche sur le net, le bus i2c peut prendre de nombreux périphériques série. Cela est possible car chaque appareil a sa propre adresse unique.

Ma question est de savoir comment câbler physiquement les deux périphériques d'interface i2c en un seul A4 et A5? Merci.

Banksia
la source
3
Réponse courte: Câblez-les en parallèle. Attachez les SDA ensemble et connectez-vous à A4 et les SCL à A5. Ensuite, bien sûr, il y a le problème de pull-up qui aide parfois.
SDsolar

Réponses:

32

Certaines personnes ont du mal à visualiser les choses connectées ensemble, alors voici une image:

(Suggestion de présentation)

schématique

simuler ce circuit - Le schéma créé à l'aide de CircuitLab I2C est un bus, donc les signaux du même nom sont connectés ensemble. Le schéma d'adressage permet au microcontrôleur de sélectionner le périphérique auquel il parle. Sur l'Arduino, les résistances de pull-up de 10k sont "VDD", qui sont les broches 5V ou 3,3V.

gbarry
la source
Salut, cela peut être très basique mais je suis nouveau dans l'électronique et j'ai atterri cette page à partir de la recherche Google, à quoi se réfère uC?
Ciasto piekarz
Je crois que la référence est à n'importe quel uC, car le schéma de connexion devrait être le même, sauf indication contraire.
KingsInnerSoul
uC peut être un Arduino. SDA est la broche A4 et SCL est la broche A5.
SDsolar
9
@Ciastopiekarz, μC est l'abréviation de "microcontrôleur". La lettre grecque μ est l'abréviation de micro. Parce que μ ressemble à u, beaucoup de gens écrivent simplement "uC".
foobar barbecue
9

Pour I2C, si tous les périphériques esclaves ont des adresses de périphérique différentes, toutes les broches SDA doivent être connectées ensemble et toutes les broches SCL doivent être connectées ensemble. C'est aussi simple que ça.

Naturellement, vous devez également inclure des résistances de rappel sur les deux lignes, comme requis pour I2C. Comment choisir les valeurs de résistance a été discuté ici avant .

Le photon
la source
J'ai constaté que tant que l'un des appareils est le DS3231 RTC, aucun pullup externe n'est requis.
SDsolar
3
@SDsolar, cela signifie probablement que le DS3231 a des tractions internes, donc en utilisant cet appareil, vous fournissez des tractions pour le bus. Ce n'est pas nécessairement une bonne chose, car cela limite votre liberté d'ajuster la résistance de pull up en fonction du nombre d'appareils sur le bus.
Le Photon
Mes pensées exactement. L'ajout de pullups externes serait en parallèle avec tout ce qui se trouve dans le DS3231, et pourrait donc ne pas être suffisant pour qu'I2C soit satisfait.
SDsolar
@SDsolar, qu'est-ce que cela a à voir avec la question d'OP ou ma réponse? Ce n'est pas un site de discussion général. Si vous voulez simplement parler de choses, vous pouvez rejoindre notre salle de chat .
Le Photon
3

Connectez deux broches A4-sda à A5-scl (sur les deux cartes uno-uno) et connectez la résistance de 5v de chaque ligne sda-scl correspondante.

entrez la description de l'image ici

daedalucian
la source
voté parce que la réponse ne répond pas à la question d'origine, à savoir "câbler physiquement les deux périphériques d'interface i2c en un seul A4 et A5".
Oleg Mazurov
Je ne pouvais pas supprimer, donc je modifie pour une réponse (peut-être) plus satisfaisante
daedalucian
Le partage de la tension n'est pas nécessaire non?
clankill3r
0

I2C est un protocole de transfert de données développé par Philips. Également connu sous le nom d'interface à deux fils car il utilise deux fils pour la communication. Ligne d'horloge série SCL. SDL-Serial Data Line. Vous devez donc connecter les broches correspondantes des appareils i2c, que ce soit une eeprom ou une lcd aux broches SCL et SDL du micro-contrôleur que vous utilisez avec une résistance de rappel à VDD. Puisqu'il s'agit d'un protocole d'adresses ayant une adresse 7 bits pour chaque périphérique connecté, vous pouvez adresser jusqu'à 2 ^ 7 périphériques différents. Mais normalement, l'adresse I2C d'un périphérique esclave est prédéfinie avec quelques bits à câbler par le développeur. Cela aide à connecter le même type d'appareils avec différentes parties d'adresse câblée sur le même bus.

Antony Tom Mathews
la source
1
C'est vrai, mais ça craint si vous en voulez plus d'un, comme l'unité d'intensité lumineuse BH1750. Je veux 4 d'entre eux et je ne veux pas gérer la commutation double bus I2C. De plus, certains appareils comme le DS3231 ont des pullups internes, donc tous les pullups externes sont en parallèle avec eux.
SDsolar
0

Vous devez également vérifier les résistances de tirage. Si vous utilisez des cartes déjà fabriquées, pas seulement la puce, ces cartes ont généralement des résistances de tirage à bord entre bus et vcc. Ainsi, lorsque vous connectez tout en parallèle, les résistances sont également en parallèle, donc la valeur totale de la résistance baisse et votre communication peut échouer.

Petre O.
la source