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}} |