Protocole I2C
Adressage I2C, ACK/NACK, conditions START/STOP et structure de FSM VHDL.
Qu'est-ce que I2C ?
Le protocole I2C (Inter-Integrated Circuit, prononcé "I carré C" ou "I deux C") a été développé par Philips Semiconductors (aujourd'hui NXP) en 1982. Il permet la communication entre plusieurs composants sur un bus série à seulement deux fils.
Ses caractéristiques principales :
- 2 fils : SDA (données) et SCL (horloge)
- Open-drain : les lignes nécessitent des résistances de pull-up externes
- Multi-maître : arbitrage matériel possible entre plusieurs maîtres
- Adressage : chaque esclave possède une adresse unique (7 ou 10 bits)
- ACK/NACK : accusé de réception à chaque octet
Signaux I2C
| Signal | Type | Description |
|---|---|---|
| SDA | Open-drain bidirectionnel | Serial Data - données |
| SCL | Open-drain bidirectionnel | Serial Clock - horloge |
Les deux lignes sont tirées au niveau haut par des résistances de pull-up. Tout composant sur le bus peut abaisser une ligne (drain ouvert), mais aucun ne peut la forcer au niveau haut - seules les résistances de pull-up le font.
Conditions Start et Stop
I2C utilise deux conditions spéciales qui ne respectent pas les transitions normales (données stables pendant SCL haut) :

Condition START : SDA descend pendant que SCL est haut. Condition STOP : SDA monte pendant que SCL est haut.
Les données sur SDA ne doivent changer que lorsque SCL est bas - sauf pour les conditions START et STOP.
Trame I2C
Une transaction I2C typique (écriture) :
START | Adresse (7 bits) | R/W='0'