Cours I2C
Cours I2C
Cours I2C
Ce document est une introduction à la norme orsI2C, pour plus d’informations consultez :
The I2C-bus and how to use it (pdf) de Philips Semiconductors
http://www.i2c-bus.org/fileadmin/ftp/i2c_bus_specification_1995.pdf
2
Le bus I C (IIC : Inter-IC-Communication ) permet la connexions de circuit intégrés à proximité
(1m). Les caractéristiques électriques et le protocole de communication ont été déposés par Philips,
l’I2C est devenu un standard industriel utilisé par de très nombreux constructeurs.
Sur le bus I2C le niveau logique dominant est le 0, le niveau récessif est le 1. En absence de
commande le niveau logique (repos) est donc 1. Les interfaces sont constitués de transistors MOS
drains ouverts, ce qui élimine tout risque de court-circuit électrique (mais pas de court-circuit logique).
Le bus doit être équipé de deux résistances de pull-up (4K à 10K)
Comme entrée et sortie se font sur un même fil, un circuit peut vérifier l’état récessif de la ligne. Il
place un 1 logique (transistor bloqué) et vérifie que la ligne est bien à 1, dans le cas contraire, c’est
qu’un autre circuit est en train de placer un 0.
L’émetteur peut donc vérifier l’émission effective de chaque bit.
Protocole I2C :
Les échanges commencent toujours par une condition START sur SCL/SDA et finissent par une
condition STOP
Les données sont échangées par octets, chaque octet est suivi d’un bit d’acquittement à 0 généré par
l’esclave et lu par le maitre.
ts
Le bus I2C pouvant accueillir plusieurs esclaves ceux-ci sont identifiés par une adresse sur 7 bits, le
ième
8 bits de l’octet indique s’il s’agit d’une opération d’écriture dans l’esclave (0) ou de lecture (1).
Par exemple pour un circuit dont l’adresse est 0b1010000. L’adresse I2C en écriture sera
0b10100000 (0xA0) et 0b10100001 (0xA1) en lecture.
Exemple d’échanges
Le maitre transmet l’adresse d’écriture d’un esclave suivi de deux octets de données.
Le maitre demande une lecture, l’esclave transmet deux octets, c’est maintenant le maitre aui place
les acquittements.
Dans un même échange on peut trouver des écritures puis des lectures d’un esclave :
Par exemple, la lecture d’un mémoire nécessite l’écriture de l’adresse interne à lire.
Grace au principe du pull-up, le bus I2C accepte des circuits alimenté avec des tensions différentes
(sous certaines conditions, voir datasheets)