Rappels sur le Bus I2C

 

Table Des Matières:

La spécification complète du bus I2C est disponible gratuitement sur le site de Phillips semiconducteur.

Une lacune technique, un trou de mémoire vite le site de Xavier COTTON et sa librairie de cours sur l'électronique !!!!

 

Vers page d'accueil
Vers la mienne
Vers page des pro
Vers pages des momes
Vers page photo
Mon bookmark
Vers plan du site
Page précédente

Historique

Le bus I2C pour Inter-IC a été inventé dans les années 1980 par Philips afin de relier simplement plusieurs circuits intégrés entre eux. Le taux de transfert sur le bus peut atteindre 100kbits/s (soit 750ko/mn). En 1992, la spécification du bus (disponible sur le site de Philips Semiconductor) a été modifiée afin d'atteindre un taux de transfert de 400kbits/s (c'est le mode fast) tout en conservant une compatibilité ascendante avec la version précédente. L'enjeu de cette compatibilité est importante puisque l'offre Philips est de 150 produits différents et il a été adopté par une cinquantaine de fabricants qui proposent près de 1000 référence différentes.

La dernière évolution de la spécification date de 1998, pour implémenter un taux de transfert de 3,4Mbits/s c'est le mode hight speed. On obtient ainsi un bus dont les débits peuvent varier de 0 à 3.4Mbits/s, cette grande souplesse est très appréciable.

Présentation

L'I2C est un bus de liaison électronique ne nécessitant que 2 fils (une horloge et un fil de données) c'est ce qui fait toute sa force. On peut ainsi relier et faire communiquer entre eux des microcontroleurs, des mémoires, des convertisseurs de tension (analogique/digital et digital/analogique), des ports d'entrées sortie logique, des composants de gestion d'alimentation, des sondes de température... Je m'arrête là la liste est longue ...On a la possibilité de réaliser un système numérique complet avec seulement 2 fils et pas un de plus. Quand on sait qu'un système numérique de base comporte 16 fils d'adresse, 8 fils de données et presque'autant de contrôle, c'est une vraie aubaine pour l'électronicien amateur. Cela donne aussi des systèmes très modulaires, en effet, il devient très facile d'y ajouter un port d'E/S ou un convertisseur AD/DA.

C'est un bus série, c'est-à-dire que les données binaires - ou bit - sont transmises les unes derrières les autres ce qui constitue une trame série. Une des principale caractéristique de ce bus est le format de la trame qui est constituée par une condition de start suivi d'un octet d'adresse lui même terminé par un bit d'accusé de réception (tout octet transmis sur le bus est terminé par un bit d'accusé de réception, acknoledge en anglais) viennent ensuite les octets de données en nombre variable. La fin des données est marquée par la condition stop.

C'est qui plus est un bus multi-maître avec système de détection de collision et d'arbitrage.

Caractéristiques électriques du bus

Tous les composants peuvent être connecté en emmetteur/récepteur sur le seul et unique fil de données SDA grâce à leurs sorties en collecteur ou drain ouvert, d'où la présence sur la lignes d'une résitance de tirage à la borne positive de l'alimentation.

La valeur de Rp dépend de:

  • la tension d'alimentation
  • la capacité total présente sur le bus
  • Le nombre total de composants connectés
Vers page d'accueil
Vers la mienne
Vers page des pro
Vers pages des momes
Vers page photo
Mon bookmark
Vers plan du site
Page précédente

Voici la carcatéristique de Rpmin en fonction de la tension d'alimentation:

Rs: résistance série protégeant contre les surcharges.

Une caractéristique électrique intéressante du bus est la spécification de la fréquence d'horloge:

En effet, la fréquence de l'horloge peut être 0 (très lente). Concrètement c'est le maître du bus qui impose la vitesse du bus.

Les niveaux logiques électriques sur le bus en mode standard (100Kbits/s):

MIN
MAX
Unité

Vil
ou

-0.5
-0.5

1.5
0.3VDD

V

Vih
ou
3.0
0.7VDD
VDD+0.5
VDD+0.5
V
Vol
0
0.4
V
Ci
-
10
pf

 

Vers page d'accueil
Vers la mienne
Vers page des pro
Vers pages des momes
Vers page photo
Mon bookmark
Vers plan du site
Page précédente

Protocole de communication I2C

La spécification du bus I2C prévoit un mécanisme d'arbitrage du bus ainsi qu'un autre de synchronisation de l'horloge par insertion de wait state (voir la dite spec).

Communication mono maître:

    2 postulats principaux régissent les transferts de données en I2C:

    • Le signal de données (SDA) ne doit changer d'état que pendant l'état bas du signal d'horloge (SCL).
    • Un top d'horloge est constitué d'une séquence bas haut bas du signal SCL.

     

    Au repos, les 2 lignes de communication (SDA et SCL) sont au niveau logique haut. En effet, le signal d'horloge n'est pas actif en permanence comme c'est le cas avec d'autres bus de communication, mais seulement pendant le transfert effectif des données.

    Le transfert débute par une condition dite de START: transition haut vers bas du signal SDA alors que SCL reste à l'état haut (ce qui est une exception par rapport au premier postulat énoncé ci-dessus). Puis viennent les octets de données transférés bit par bit en commençant par le bit de poids fort et en terminant par le neuvième bit d'accusé de réception sur le signal SDA avec un top d'horloge pour chaque bit en respectant le premier postulat. Le nombre d'octets ainsi transféré n'est pas limité et dépend du composant destinataire du message. Le transfert se termine par la condition de STOP: tout d'abord retour du signal SCL à l'état haut puis transition bas haut de SDA alors que SCL est stable à l'état haut.

    Le premier octet transféré est un peu particulier. Il s'agit de l'adresse du composant sur le bus codée sur 7 bits en mode standard (étendue à 10 bits dans la version 2 de la spécification) suivi du bit lecture/écriture R/Wb (un niveau haut indique une écriture). Les 7 bits d'adresse sont généralement (mais ce n'est pas une obligation) découpés en une partie fixe (par exemple les 4 bits de poids fort) et une partie variable (les 3 bits de poids faible). Ce découpage dépend du nombre de broche disponible sur le composant pour sélectionner l'adresse. Par exemple, une EEPROM série en boîtier 8 broches est limité en nombre de broches d'adresse. 2 broches pour l'alimentation, 2 broches pour le bus et il n'en reste plus que 3 !!!

     

Voici une figure qui résume bien les propos ci-dessus:

chronogrammes I2C complet

... à suivre