I- Bus I2C
1. Introduction :
Le bus I2C (IIC :
Inter-IC-Communication) permet la connexion des circuits intégrés qui se
trouvent à une distance maximale de 1m. Les caractéristiques électriques et le protocole
de communication ont été développés au début des années 1980, par Philips, le
but étant de minimiser les liaisons entre les circuits intégrés numériques de
ses produits (Téléviseurs, éléments Hi Fi, magnétoscopes, ...). Le bus I2C est devenu un standard industriel utilisé par
de très nombreux constructeurs.
2. CARACTERISTIQUES
Le bus I2C permet de communiquer très divers composants électroniques à traves seulement trois fils : une ligne de
données (SDA), une ligne d'horloge (SCL), et une ligne de référence électrique
(masse). [3]
Il s’agit d’une
liaison série, cela signifie que la vitesse de transfert est plus faible qu'avec une liaison parallèle. Le
bus I2C permet des vitesses d’échange de données de 100 kbits/s (mode standard) ,400 kbps (fast
mode), 3,2 Mbps (high-speed mode).
Le but d’un bus I2C n’est pas de réaliser une vitesse
de transmission élevée mais de permettre de réduire la complexité des circuits imprimés
à réaliser. C’est sans doute pour cela que de nombreux fabricants ont adoptés
le système : microcontrôleurs, convertisseurs A/N et N/A, mémoires
(RAM, EPROM, EEPROM, etc.), capteurs de température, circuits audio (égaliseur,
contrôle de volume, etc.) … etc
Puisque le bus
I2C permet de relier de nombreux composants sur la même ligne , ce nombre est
essentiellement limité par la charge capacitive des lignes SDA et SCL : 400
pF [5]
3. Principe
Pour se connecter à un bus I2C il faut deux fils de
communication et une masse. Les lignes sont SDA (Signal DAta), pour
transmettre les données, SCL (Signal CLock) pour transmettre un signal
d'horloge synchrone (ce signal permet de synchroniser les échanges entre le maître
et l’esclave). Les tensions des niveaux logiques dépendent de la technologie
des circuits en présence (CMOS, TTL). Il faut que tous les circuits connectés
au bus I2C utilisent les mêmes tensions pour
définir les niveaux haut et bas. Cela implique que tous les composants
connectés à un même bus soient alimentés de façon identique.
Etant donnée que les différents esclaves sont présents
sur le même bus , certains vont être à l’état haut d’autres seront à l’état bas
en même temps , ce qui va créer un problème . Ce ci est évité à l’aide d’un
astuce technologique basique : mettre les sorties à collecteur ouvert (ou
à drain ouvert pour les circuits CMOS) , ainsi le niveau sur la ligne sera une
fonction « ET » de toutes les sorties connectées.
4. Le protocole I2C
La communication sur le bus I2C est organisée
comme suit :
Ø Le Maître envoie sur le bus
l'adresse du composant (esclave) avec lequel il veut communiquer, chaque esclave a une
adresse fixe ;
Ø L'esclave reconnaît son adresse et
répond par un signal de confirmation, ensuite le Maître
continue la procédure de communication (écriture/lecture) ;
Ø Les transactions sont confirmées par un ACK
(Acknowldge).
Le déroulement d’une communication I2C :
v Au repos : SDA et SCL à 1 ;
v Conditions de transmissions de données :
- Départ : SDA = 0 et SCL = 1,
- Arrêt : SDA= 1 et SCL = 1 ;
v Si le
bus est libre on prend le contrôle, le
maître génère un signal d’horloge.
Comment transmettre un octet
v Le maître transmet le bit de poids fort D7 sur
SDA ;
v Le maitre valide la donnée en appliquant un
niveau 1 sur SCL ;
v SCL revient à 0, le maitre poursuit avec D6, … jusqu’à ce que l’octet
soit envoyé ;
v Le maitre envoie le bit ACK à 1 ;
v L’esclave doit répondre par un 0 pour indiquer que la transmission s’est
effectuée correctement. Le maître voit le 0 et peut passer à la suite.
Transmission d’une adresse
v Chaque composant (esclave) doit avoir une
adresse unique codée sur 7 bits ;
v L’adresse est fournie sous la forme
suivante :
remarque : le bit R/W détermine si le maître veut lire ou
écrire.
Ecriture d’une donnée :
Pour écrire une donnée il faut suivre cette
procédure :
v Envoi de l’adresse ;
v Mode écriture (R/W à 0) ;
v Envoi de la donnée.
Lecture d’une donnée
Pour lire
une donnée il faut suivre cette procédure :
v Le maître envoie l’adresse puis attend l’ACK de
l’esclave ;
v L’esclave émet les données sur SDA.
v Le maître positionne ACK à 0 pour continuer la
lecture ou à 1 pour stopper la transmission.
Aucun commentaire:
Enregistrer un commentaire