Modifications

Sauter à la navigation Sauter à la recherche
3 484 octets ajoutés ,  12 février 2021 à 21:53
Ligne 3 : Ligne 3 :  
== Multiplexeur TCA9548A ==
 
== Multiplexeur TCA9548A ==
   −
[[fichier:TCA9548A]]
+
Le {{pl|709|TCA9548A}} est un multiplexeur de bus I2C qui permet de brancher le bus I2C en entrée vers l'un des 8 bus I2C en sortie du TCA9548A.
    +
[[Fichier:TCA9548A.png|240px]]
   −
{{I2C-Hacking-Trailer}}
+
Grâce à ce composant, il est alors possible de brancher un même capteur I2C '''SANS bit d'adresses''' plusieurs fois sur un même bus I2C.
 +
 
 +
== Utilisation du TCA9548A ==
 +
 
 +
Comme de nombreux breakout Adafruit, le {{pl|709|TCA9548A}} est compatible avec les logiques 3.3V et 5V.
 +
 
 +
L'utilisation de ce composant est simple:
 +
* le multiplexeur utilise lui même une adresse I2C (0x70, ajustable entre 0x70 à 0x77).
 +
* Pour sélectionner le bus de sortie: envoyer un simple octet/byte pour indiquer le port souhaité
 +
BAM! toutes les autres informations transmises sur le bus I2C seront envoyées vers le port de sortie choisi.
 +
 
 +
En théorie, il est possible d'utiliser jusque 8 multiplexeurs sur un même bus (un pour chaque adresse entre 0x70 et 0x77). Cela permet de contrôler jusqu'à 64 fois la même adresse sans collision.
 +
 
 +
[[Fichier:TCA9548A-pinout.png]]
 +
 
 +
=== Alimentation ===
 +
* '''Vin''' : Broche d'alimentation 3 à 5V CC. Alimentez le TCA avec le même niveau logique que votre microcontrôleur - ex. 5V pour un Arduino, 3V pour un Pico ou une Pyboard
 +
* '''GND''' : Masse commune pour l'alimentation et la logique.
 +
 
 +
=== Broches de contrôle du TCA ===
 +
* '''SCL''' : Broche d'horloge du bus I2C permettant de contrôler la configuration du TCA. Doit être branché sur le bus I2C du microcontrôleur.
 +
* '''SDA''' : Broche de données du bus I2C permettant de contrôler la configuration du TCA. Doit être branché sur le bus I2C du microcontrôleur.
 +
* '''RST''' : Permet de réinitialiser le multiplexeur. Haut niveau haut par défault, à placer à la masse pour réinitialiser le TCA.
 +
* '''A0 A1 A2''' : ce sont les bits d'adresse dy TCA. Par défaut, le multiplexeur porte l'adresse 0x70 (lorsque les 3 bits sont au niveau bas). Connectez ces bits à Vin pour fixer l'adresse de 0x71 à 0x77. A0 à un poids de 1, A1 à un poids de 2, A2 à un poids de 4.
 +
 
 +
=== Broches I2C multiplexées ===
 +
 
 +
'''SDx''' et '''SCx''' :  où x peut avoir une valeur de 0 à 7 pour les sorties '''SD0/SC0''' à '''SD7/SC7'''.  Ce sont les broches multiplexées. Chacune étant un bus I2C complètement séparé.
 +
 
 +
Vous disposez donc de 8 bus I2C pouvant supporter des périphériques ayant exactement les mêmes adresses (puisque ces périphériques sont sur des bus isolés les un des autres).
 +
 
 +
[[Fichier:TCA9548A-Arduino.png|640px]]
 +
 
 +
'''Ces bus I2C ne disposent pas de résistances pullups sur SDx et SCx'''. Si vous utilisez des breakouts ou composants ne disposant pas de résistances pull-up alors il faudra les placez vous même sur le bus!
 +
 
 +
{{underline|Tolérance 5V:}} a noter qu'il est possible d'avoir '''Vin à 3.3V''' et les broches SDx et SCx en pull-up à 5V (elles sont "tolérances" 5V).
 +
 
 +
=== Utilisation avec Arduino ===
 +
 
 +
Voici une petite fonction outil qui permet de sélectionner le port de sortie (de 0 à 7).
 +
 
 +
<nowiki>#define TCAADDR 0x70
 +
 
 +
void tcaselect(uint8_t i) {
 +
  if (i > 7) return;
 +
 +
  Wire.beginTransmission(TCAADDR);
 +
  Wire.write(1 << i);
 +
  Wire.endTransmission(); 
 +
}</nowiki>
 +
 
 +
Vous pourrez ensuite faire un appel {{fname|tcaselect(0)}} à {{fname|tcaselect(7)}} pour sélectionner le port de sortie du multiplexeur.
 +
 
 +
Un code d'exemple Arduino plus complet est disponible sur [https://learn.adafruit.com/adafruit-tca9548a-1-to-8-i2c-multiplexer-breakout/wiring-and-test cette page du tutoriel Adafruit].
 +
 
 +
 
 +
{{I2C-Hacking-TRAILER}}
29 837

modifications

Menu de navigation