Vous êtes sur la page 1sur 4

Introduction:

Le bus Inter-Integrated Circuit (I2C) est une interface série à deux fils initialement développée par Phillips
Corporation pour une utilisation dans les produits grand public. Il s'agit d'un bus bidirectionnel qui est
facilement implémenté dans tout processus IC (NMOS, CMOS, bipolaire) et permet une communication
inter-IC simple. Les connexions sont minimisées en utilisant une ligne de données série (SDA), une ligne
d'horloge série (SCL) et une masse commune pour transporter toutes les communications. I2C a été
largement accepté et a même servi de prototype pour le bus de gestion système (SMBus), qui est un
sous-ensemble de I2C

Conception :

Le protocole de communication I2C suit une hiérarchie maître / esclave, dans laquelle le maître est défini
comme le dispositif qui horloge le bus, adresse les esclaves et écrit ou lit des données vers et depuis les
registres des esclaves. Les esclaves sont des appareils qui ne répondent que lorsqu'ils sont interrogés par
le maître, via leur adresse unique. Par conséquent, il est impératif d'éviter la duplication d'adresses entre
les esclaves. Les esclaves n'initient jamais un transfert de données.

Le bus I2C n'utilise que deux lignes bidirectionnelles, une ligne de données série (SDA) et une ligne
d'horloge série (SCL). Les appareils compatibles I2C se connectent au bus avec un collecteur ouvert ou
des broches de drain ouvertes qui tirent la ligne BAS. Lorsqu'il n'y a pas de transmission de données au
I2C, les lignes de bus sont inactives à l'état HAUT; les lignes sont passivement tirées haut.

La transmission se produit en basculant les lignes en tirant LOW et en relâchant HIGH. Les bits sont
cadencés sur les fronts descendants de l'horloge. Le taux de transfert de données standard est de 100
kbits / s tandis que le taux de transfert en mode rapide est de 400 kbits / s.
Le bus I2C peut prendre en charge plusieurs périphériques, à la fois SLAVE et MASTER, et la seule
limitation est la capacité sur le bus (400pF) et l'espace d'adressage (128 adresses uniques) à mesure que
d'autres périphériques sont ajoutés.

Protocole de transmission de données :

Les paquets de données I2C sont organisés en octets de 8 bits comprenant l'adresse de l'esclave, le
numéro de registre et les données à transférer. La transmission sur le bus est une opération de lecture
ou d'écriture. Les protocoles de lecture et d'écriture reposent sur une série de sous-protocoles tels que
les conditions de démarrage et d'arrêt, les bits de démarrage répétés, l'octet d'adresse, les bits de
transfert de données et les bits d'acquittement / non accusé de réception.

Conditions START et STOP :

La communication 2C avec cet appareil est initiée par le maître qui envoie une condition START et se
termine

par le maître envoyant une condition STOP. Une transition haut-bas sur la ligne SDA alors que le SCL est
haut

définit une condition START. Une transition de bas en haut sur la ligne SDA alors que le SCL est haut
définit un STOP

état.

Figure 5. Exemple de condition START et STOP


2.1.2 Condition de DÉMARRAGE répété
Une condition START répétée est similaire à une condition START et est utilisée à la place d'un STOP dos
à dos

puis condition START. Il semble identique à une condition START, mais diffère d'une condition START

car cela se produit avant une condition STOP (lorsque le bus n'est pas au repos). Ceci est utile lorsque le
maître

souhaite démarrer une nouvelle communication, mais ne souhaite pas laisser le bus au repos avec la
condition STOP,
ce qui a la chance que le maître perd le contrôle du bus au profit d'un autre maître (en multi-master

environnements)

Octet d'adresse :
Une adresse d'esclave est envoyée au format octet 8 bits, MSB en premier, mais le dernier bit indique si
la transaction lira ou écrira sur l'esclave. En effet, les 7 bits supérieurs constituent l'adresse de l'esclave,
tandis que le 8e bit sert de bit de commande READ / WRITE #. Il existe ainsi un espace d'adressage de
128 adresses uniques pour adresser jusqu'à 128 esclaves. Souvent.

Par exemple, suite à une condition de démarrage, le MASTER envoie un octet d'adresse qui correspond à
l'adresse unique d'un équipement SLAVE sur le bus. Les appareils sur le bus ont chacun leur propre
adresse fixe ou programmée. Les esclaves sur le bus I2C répondent à la commande de démarrage en
écoutant activement les sept premiers bits du premier octet envoyé. Si les sept premiers bits
correspondent à l’adresse de l’équipement ESCLAVE, il continue en lisant le 8e bit (READ / WRITE # bit)
de l’octet d’adresse. Tous les autres appareils SLAVE ignorent le reste de la transaction. Un LOW dans le
bit READ / WRITE # spécifie que le MASTER écrira des données sur le dispositif SLAVE adressé, et pour un
HIGH, le MASTER lira les données du dispositif SLAVE. Une fois que l'octet d'adresse a été lu par
l'ESCLAVE correspondant, il accusera réception de ce transfert en envoyant un bit d'acquittement en
tirant sur SDA LOW pour la période d'impulsion HAUTE de l'horloge adjacente, puis assumera le rôle d'un
émetteur-esclave ou d'un récepteur-esclave en fonction de la lecture. / WRITE # bit envoyé.

A partir de ce moment, à moins qu'un bit d'arrêt ne soit envoyé, l'ESCLAVE suppose que puisqu'il a déjà
été adressé, toute la communication lui est dirigée.

Vous aimerez peut-être aussi