Le bus I²C

Le bus I2C

Les deux connexions du bus I2C se nomment SCL (Serial Clock Line) et SDA (Serial Data line).

Elles sont disponibles sur une carte standard Arduino en employant la broche analogique 5 pour SCL qui fournit un signal d’horloge, et la broche analogique 4 pour SDA, qui s’occupe du transfert des données (sur la Mega, il faut utiliser la broche 20 pour SDA et la broche 21 pour SCL). 


La carte Uno rev 3 a des broches supplémentaires qui dupliquent les broches 4 et 5. 


Pour le Raspberry Pi type B, il s’agit respectivement des broches GPIO2 et GPIO3 pour SDA et SCL repérées sur le « Pi Cobbler ».

Un périphérique sur le bus I2C est considéré comme le périphérique maître. Son travail consiste à coordonner le transfert des informations entre les autres périphériques (esclaves) qui sont connectés.


Il ne doit y avoir qu’un seul maître qui contrôle les autres composants auxquels il est connecté. La figure ci-dessous montre un maître I2C avec plusieurs esclaves I2C.


Maître I2C avec plusieurs esclaves I2C


Les périphériques I2C ont besoin d’une référence en tension commune (GND masse commune) pour communiquer.

Les périphériques esclaves sont identifiés par leur adresse. Chaque esclave doit avoir une adresse unique. Certains appareils I2C ont une adresse fixe alors que d’autres permettent que l’on configure leur adresse en paramétrant certaines broches ( A2, A1, A0) au niveau Haut (High) ou au niveau bas (low) ou en envoyant des commandes d’initialisation.


Remarques :

L’Arduino utilise des valeurs sur 7 bits pour spécifier les adresses I2C. Certaines notices techniques de périphériques, ainsi que Flowcode, emploient des adresses sur 8 bits, dans ce cas il faut diviser par deux pour obtenir la valeur correcte sur 7 bits.


La bibliothèque Arduino "Wire" masque toutes les fonctionnalités de bas niveau du I2C et permet l’emploi de commandes simples pour initialiser les appareils et communiquer avec eux.


Le bus I2C permet d’échanger des informations sous forme série avec un débit pouvant atteindre 100 kilobits/s ou 400 kilobits/s pour les versions les plus récentes.


Ses points forts sont les suivants :

  • La bibliothèque Arduino "Wire" masque toutes les fonctionnalités de bas niveau du I2C et permet l’emploi de commandes simples pour initialiser les appareils et communiquer avec eux.


  • Le bus I2C permet d’échanger des informations sous forme série avec un débit pouvant atteindre 100kbit/s (Standard mode (Sm)) , 400kbit/s (Fast mode (Fm)), 1Mbit/s (Fast plus mode (Fm+),  3,4Mbit/s (High-speed mode (Hs-mode)) pour les versions les plus récentes.


  • le nombre maximal d’abonné n’est limité que par la charge capacitive maximale du bus qui peut être de 400 pF


  • les niveaux électriques permettent l’utilisation des circuits en technologies CMOS ou TTL.

Créé avec HelpNDoc Personal Edition: Créer des documents d'aide CHM facilement