Modifications

Sauter à la navigation Sauter à la recherche
2 501 octets ajoutés ,  12 février 2021 à 21:53
Ligne 5 : Ligne 5 :  
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.
 
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]]
+
[[Fichier:TCA9548A.png|240px]]
    
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.
 
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.
Ligne 19 : Ligne 19 :     
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.
 
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}}
 
{{I2C-Hacking-TRAILER}}
29 836

modifications

Menu de navigation