1. Principe du I2C

publicité
Cours 243-648 Communications Numériques
Le bus I2C
Claude Barbaud
A-08
4 septembre 2008
1. Principe du I2C
Le I2C (Inter Integrated Circuit) est un bus série synchrone multi-maître qui
fonctionne sous la relation maître-esclave.
Développé par Philips. Géré par l’I2C bus comitee.
Maître-esclave
C’est le maître qui contrôle la communication, qu’il soit l’émetteur ou le
récepteur des données.
L’esclave est alors soumis au maître : il reçoit ou envoie des données sur
demande. La synchronisation est faite par le maître.
Série synchrone
Les communications sont synchronisées par une horloge (fournie par le
maître).
Multi-Maître
Plusieurs processeurs peuvent prendre le contrôle du bus. Le protocole
prévoit une procédure de prise de contrôle du bus.
3 fils



une horloge (SCL),
une ligne de données (SDA),
un commun.
Principe du I2C
Page 1
2. Hardware
La configuration du bus I2C est très simple : toutes les sorties sont à
collecteur ouvert ou à drain ouvert, et la logique est positive.
Par cette configuration, les lignes sont au niveau logique 1 au repos, sans
qu’aucun circuit ne place cette ligne à 1.





Il est nécessaire de placer des résistances de rappel (pull-up) pour définir
le niveau haut.
Le nombre de composants qu'il est possible de relier est limité par la
charge capacitive des lignes SDA et SCL : 400 pF . Un composant a une
charge entre 10 et 20 pF.
Les données sont transmises en série à 100Kbits/s en mode standard et
jusqu'à 400Kbits/s en mode rapide.
Une impulsion d’horloge est générée à chaque fois qu’un bit est transféré.
Pas de court-cicuit possible sur SDA et SCL.
3. Protocole logiciel
Avec le compilateur CCS
On doit placer la directive #use au début du fichier
#use i2c(master, SDA = PIN_C4, SCL = PIN_C3)
Au repos
Les lignes SDA et SCL sont au niveau haut (1 logique).
Condition de départ
Un processeur (maître) signale son intention de parler par la condition
START:
Il place SDA = 0 pendant que SCL est au repos (=1)
Le bus est alors occupé: les autres ne peuvent plus parler.
Principe du I2C
Page 2
Avec le PIC: i2c_start();
Condition d'arrêt
Le processeur (maître) arrête de parler en replaçant la ligne SDA à 1
pendant que SCL est au repos ( = 1)
Le bus est alors libre: les autres peuvent parler
Avec le PIC: i2c_stop();
En activité
Les changements sur SDA ont lieu pendant que SCL = 0.
Format des transferts
Les données sont transférées en bytes. Le bit le plus important est envoyé
en premier.
1. On envoie d'abord l'adresse du périphérique. Cette adresse est sur 7
bits [A7..A1]
Le 8ème bit est le R/W: 0 = Write, 1 = Read.
Avec le PIC: i2c_write(adresse);
Des parties d'adresse sont déterminées d'avance pour un type de
périphérique. Les autres parties sont déterminées par matériel (état de
broches)
Liste partielle de périphériques
Principe du I2C
Page 3
Principe du I2C
Page 4
Principe du I2C
Page 5
2. Si écriture: envoi de l'adresse interne si besoin, puis de la donnée
Par exemple(mémoire):
i2c_start();
i2c_write(adresse externe, r/w = 0);
i2c_write(adresse interne partie haute);
i2c_write(adresse interne partie basse);
i2c_write(donnée);
i2c_stop();
Principe du I2C
Page 6
3. Si lecture: on doit écrire l'adresse, en mode write (adresse externe +
adresse interne) puis envoyer une commande de lecture et enfin lire la
donnée.
Par exemple(mémoire)
i2c_start();
i2c_write(adresse externe r/w = 0);
i2c_write(adresse interne partie haute);
i2c_write(adresse interne partie basse);
i2c_start();
i2c_write(adresse externe r/w = 1);
donnée = i2c_read(0); // 0 = pas d'acknowledge
i2c_stop();
Acquittement (= acknowledge)
Le récepteur de la donnée doit fournir un acquittement sur la broche SDA
Cet acquittement complète la transmission. Il autorise l'émetteur à envoyer
la donnée suivante.
 si l'esclave est le récepteur, l'acquittement est généré quand il est prêt
à recevoir une nouvelle donnée.

 si le maître est le récepteur, il a le choix de donner un acquittement
pour demander une nouvelle donnée [i2c_read();] ou de ne pas donner
d'acquittement [i2c_read(0);], pour dire à l'esclave de se taire.
L'esclave ne dit plus rien, et le maître reprend le contrôle du bus, par
[i2c_stop(); ]. Cette possibilité est utile dans les cas suivants :
o lecture d'une mémoire par blocs(pas d’ACK quand il n’y a plus
rien à lire
o interruption générée sur le processeur maître.
Principe du I2C
Page 7
Exemple : SAA1064
Le circuit Phillips SAA1064 est un driver de 4 x 7 segments à LED :
L’adreessage comporte une partie fixe : 01110 sur les bits 7 à 3 et une partie
variable, définie par la tension à la broche 1 (ADR) :
VADR = VEE  bit2 = 0, bit1 = 0  adresses = 0x70 (écriture) et 0x71 (lecture)
VADR = 3/8 VCC  bit2 = 0, bit1 = 1  adresses = 0x72 (écriture) et 0x73
VADR = 5/8 VCC  bit2 = 1, bit1 = 0  adresses = 0x74 (écriture) et 0x75
VADR = VCC  bit2 = 1, bit1 = 1  adresses = 0x76 (écriture) et 0x77
http://www.nxp.com/acrobat_download/datasheets/SAA1064_CNV_2.pdf
Principe du I2C
Page 8
4. Adressage étendu sur I2C
De nombreuses applications sont développées régulièrement sur I2C. Le nombre
d’adresses disponibles est limité à 27, à cause des 7 bits d’adresse. Ce qui
donne 128, desquelles on retire des adresses « réservées ». Il reste 112
adresses de base.
L’I2C bus comitee a utilisé des adresses réservées pour définir un adressage sur
10 bits : 1111 1xx. Ce qui fait 2 bits. On ajoute à la trame un 2ème byte d’adresse,
pour 8 bits supplémentaires. (il reste des adresses réservées pour des
extensions futures)
5. Interfaces possibles sur I2C
De nombreuses interfaces existent sur le protocole I2C.
Par exemple:
 Port parallèle 8 bits bidirectionnels
 Mémoires
 Potentiomètre numérique
 Capteurs
 RTCC(Real Time Clock/Counter)
 Convertisseurs A/N et N/A
 Circuits Audio ( Egaliseur, Contrôle de volume, ... )
 Drivers ( LED , LCD , ...) Exemple: 4 digit LED driver SAA1064
Principe du I2C
Page 9
Téléchargement