Vous êtes sur la page 1sur 27

Protocole I2C

Module Programmation des MicroContr oleurs Industriels Licence/Ma trise informatique de Paris 6 Mars 2006

Cours MicroContr oleur - Protocoles rs232 et I2C - 1 - UPMC/LMD/LI326

Plan Ig du cours Ig

M M M M

Les differents bus series Le bus rs232 Le bus I2C Les modules du pic16f877

Cours MicroContr oleur - Protocoles rs232 et I2C - 2 - UPMC/LMD/LI326

Les bus serie Ig differents Ig


M M M

Lobjectif est de permettre la communication entre plusieurs equipements. ` grande variet e car aucun bus nest universel. Il existe une tres Il faut choisir en fonction :
G G G G G G G G G

de la distance entre les equipements (cm, m, km) ` relier du nombre dequipements a (contr du debit de donnees ole ou data) (pile/secteur) de la consommation autorisee necessaire de la abilite (bruit) (hotplug) de la maintenabilite du catalogue disponible erale, ` du co ut (en gen la bonne solution est trop chere) etc...

eral Chaque bus existe en plusieurs versions, en gen compatibles entre elles mais avec un rapport debit / distance different.

Cours MicroContr oleur - Protocoles rs232 et I2C - 3 - UPMC/LMD/LI326

Quelques bus serie Ig Ig


Bus Distance ` (metres) Debit (bits/sec) Avantage Usage domotique periph erique informatique periph erique informatique domotique periph erique electronique periph erique electronique

CAN 100 - 10 000 33k - 5k distance, s ur USB 25 1.5 - 480M debit rs232 15 100k simple I2C ls 100 100k co ut, protocole I2C hs 0.5 3.4M SPI 0.1 10M debit - co ut
M

a ` titre indicatif, il est souvent possible de jouer Ces chiffres sont donnes avec. ici, sont souvent proposes en standard par les Les bus cites, micro-contr oleurs. Le pic16f877 propose : RS232, I2C, SPI

Cours MicroContr oleur - Protocoles rs232 et I2C - 4 - UPMC/LMD/LI326

Diff electriques Ig erences Ig


M

Half duplex ou Full duplex dans les deux sens en m transit des donnees eme temps. ou pas Horloge et Data melang es et lhorloge, ou 2 ls, ou pas dhologe. 1 m eme l pour les donnees Signal differentiel ou pas utilise 2 ls de valeurs opposees ou 1 seul valant 0 ou 1. une donnee ` Signal point-a-point ou busse 1 seul pilote par l ou plusieurs pilotes par l. RS232 I2C full duplex, pas dhorloge et 2 data (3 ls), ` point. signal non differentiel, signal point a (3 ls), half duplex, horloge et data separ e signal non differentiel, signal busse.

Cours MicroContr oleur - Protocoles rs232 et I2C - 5 - UPMC/LMD/LI326

RS232 Caracteristiques principales Ig Ig


M M M M M M M

60. Protocole des annees ` simple et tres ` diffuse. Protocole tres Faible debit 100 kbauds. Pas dhorloge: lemetteur et le recepteur sentendent avant. Protocole de demarrage optionnel : CTS, RTS, ... ` Liaison point-a-point, pas de notion dadresse. de 5 a ` 8 bits avec parite. Trame de donnees
0 1 2 3 4 5 6 7

Start bit

Data : de 5 8 bits

Parit Stop 1, 1.5 ou 2 bits

Cours MicroContr oleur - Protocoles rs232 et I2C - 6 - UPMC/LMD/LI326

RS232 cablage null-modem Ig Ig


M M M M

RS232 denit deux types dinterlocuteurs : terminal et modem. Un cablage null-modem denit la communication entre 2 terminals. La liaison minimale utilise 3 ls : TX, RX et GND ` +12V La valeur 0 = Niveau electrique de +8 a ` -12V La valeur 1 = Niveau electrique de -8 a

TX RX GND

3 2 5 numro des broches DB9

3 2 5

TX RX GND

Cours MicroContr oleur - Protocoles rs232 et I2C - 7 - UPMC/LMD/LI326

RS232 synchronisation emetteur/r ecepteur Ig Ig


M

` une frequence (1200, 2400, Lemetteur transmet a standardisee 4800,...) Le recepteur connait cette frequence, et surechantillonne pour erer ` 0. rep le start : deux echantillons a Le recepteur a une petite marge derreur possible sur la frequence.

horloge dmission trame rs232 0 1 2 3 4 5 6 7

horloge de rception

Cours MicroContr oleur - Protocoles rs232 et I2C - 8 - UPMC/LMD/LI326

RS232 schema interne Ig Ig


metteur E Recepteur er ee par un automate qui vide un registre a ` la trame est gen decalage. ` la trame est lue par un automate qui remplie un registre a decalage.

horloge demission start stop 76543210 TX calcul parit RX

horloge de rception start


0 1 2 3 4 5 6 7

dtecteur stop 01234567 calcul parit ok/ko

Cours MicroContr oleur - Protocoles rs232 et I2C - 9 - UPMC/LMD/LI326

I2C principales Ig caracteristiques Ig


M M M M

I2C = IIC = Inter Integrated Circuit 80 par Philips. Protocole deni dans les annees ` diffuse. Protocole simple et tres ` 128 abonnes (version de base) communiquent sur 3 ls : Jusqua erence). SCL (horloge) , SDA (data) , GND (tension de ref Plug and Play acceptant le Hot Plug. Abonnes peut devenir ma Bus multi-maitres, tout abonne tre du bus. Arbitrage decentralis e. ` 3.4 Mbauds. debit de 100 Kbauds a Adaptation du debit en fonction de labonne. Permet la communication entre differentes technologies (5V et 3.3V).

M M M M M M

Cours MicroContr oleur - Protocoles rs232 et I2C - 10 - UPMC/LMD/LI326

I2C Ig glossaire Ig
. . . .tout element sur le bus. abonne. connecte qui envoie des donnees sur SDA. emetteur . . . tout abonne qui rec de SDA. recepteur . . tout abonne oit des donnees qui demarre ma tre . . . . . . tout abonne et termine un echange.
Le ma tre place lhorloge sur SCL.

adresse par un ma esclave . . . . . tout abonne tre.


` la possibilite darr Un esclave a eter lhorloge du maitre.

attribue a ` un esclave. adresse. . . . .numero


Sur le bus tous les esclaves ont une adresse unique.

echange . . . diablogue entre un maitre et un esclave.


Il commence par une adresse emise par le maitre, suivie dune ou peut chainer plusieurs echanges dafle. emises plusieurs donnees par le maitre ou lesclave. Un maitre

` simultanne par 2 maitres. arbitrage . . . resolution du conit dun acces


Cours MicroContr oleur - Protocoles rs232 et I2C - 11 - UPMC/LMD/LI326

I2C Ig cablage Ig
M M

` VDD si personne ne parle. Les lignes SCL et SDA sont a programme le port en Pour mettre 1 sur SCL ou SDA, un abonne la resitance ` 1 entree, Rp se charge de tirer la ligne a doit ecrire Pour mettre 0 sur SCL ou SDA, un abonne un 0, ` ` la masse. c.-a-d. relier la ligne a Il ne peut jamais y avoir de conit electrique (court-circuit VDD-GND).
VDD Rp SDA SCL GND

Rp

abonn n1

abonn n2

abonn nx

Cours MicroContr oleur - Protocoles rs232 et I2C - 12 - UPMC/LMD/LI326

I2C electriques Ig caracteristiques Ig


VDD Rp SDA SCL GND

Rp

SCL out SCL in


SCL out
0 ouvert 1 ferm

SCL in

0 ouvert 1 ferm

SDA out SDA in


SDA out
0 ouvert 1 ferm

SDA in

0 ouvert 1 ferm

abonn n1

abonn n2

Cours MicroContr oleur - Protocoles rs232 et I2C - 13 - UPMC/LMD/LI326

I2C des lines SDA et SCL Ig etats Ig


bit data bit data bit data

CAS NORMAL SI SDA stable pendant tout le pulse de SCL


SDA stable SCL SCL

suprieur pulse SCL 1


SCL

CHANGEMENT DE MAITRES SI SCL reste 1 plus dun pulse haut de SCL


START FREE time

SDA

SDA

SDA

SDA stable

SDA stable tat dattente

SDA stable

STOP

SDA change

CAS SPECIAUX SI SDA change pendant e pulse de SCL

dbut et fin dchange

chainage de plusieurs changes sans lacher le bus

SCL

SCL

SDA

SDA

START SDA passe 0 avec SCL 1

STOP SDA passe 1 avec SCL 1

START

RESTART SDA repasse 0 avec SCL 1 avant STOP

STOP

Cours MicroContr oleur - Protocoles rs232 et I2C - 14 - UPMC/LMD/LI326

I2C dun octet Ig trame de base : ecriture Ig

START : Le maitre active SDA avant SCL DATA : lmetteur change SDA pandant ltat bas de SCL SDA est stable pandant ltat haut de SCL R/W : sens de lchange /W (0) le maitre est lmetteur

STOP : le maitre lache SCL avant SDA

ACK/NACK : lmetteur lache SDA le rcepteur active pour signifier ACK

SCL maitre SCL esclave SDA maitre SDA esclave

A7

A6

A5

A4

A3

A2

A1

R/W ACK

D7

D6

D5

D4

D3

D2

D1

D0 ACK

SCL SDA

1 A7

2 A6

3 A5

4 A4

5 A3

6 A2

7 A1

1 D7

2 D6

3 D5

4 D4

5 D3

6 D2

7 D1

8 D0

9 ACK

R/W ACK

S Start

A7

A6

A5

A4 Adresse

A3

A2

A1

D7

D6

D5

D4

D3

D2

D1

D0

Write Ack

Donnes

Ack stoP

Cours MicroContr oleur - Protocoles rs232 et I2C - 15 - UPMC/LMD/LI326

I2C Ig trame de base : lecture dun octet Ig

START : Le maitre active SDA avant SCL DATA : lmetteur change SDA pandant ltat bas de SCL SDA est stable pandant ltat haut de SCL R/W : sens de lchange /W (0) le maitre est lmetteur

STOP : le maitre lache SCL avant SDA

ACK/NACK : lmetteur lache SDA le maitre place NACK pour la dernire donne

SCL maitre SCL esclave SDA maitre SDA esclave

A7

A6

A5

A4

A3

A2

A1

R/W ACK D7 D6 D5 D4 D3 D2 D1 D0

NACK

SCL SDA

1 A7

2 A6

3 A5

4 A4

5 A3

6 A2

7 A1

1 D7

2 D6

3 D5

4 D4

5 D3

6 D2

7 D1

R/W ACK

D0 NACK

S Start

A6

A5

A4

A3 Adresse

A2

A1

A0

D7

D6

D5

D4

D3

D2

D1

D0

NA

Read Ack

Donnes

NotAck stoP

Cours MicroContr oleur - Protocoles rs232 et I2C - 16 - UPMC/LMD/LI326

I2C dattente Ig trame de base : etat Ig

START : Le maitre active SDA avant SCL DATA : lmetteur change SDA pandant ltat bas de SCL SDA est stable pandant ltat haut de SCL R/W : sens de lchange /W (0) le maitre est lmetteur

STOP : le maitre lache SCL avant SDA Lesclave peut activer SCL pour ralentir le maitre ACK/NACK : lmetteur lache SDA le maitre place NACK pour la dernire donne

SCL maitre SCL esclave SDA maitre SDA esclave

A7

A6

A5

A4

A3

A2

A1

R/W ACK D7 D6 D5 D4 D3 D2 D1 D0

NACK

SCL SDA

1 A7

2 A6

3 A5

4 A4

5 A3

6 A2

7 A1

1 D7

2 D6

3 D5

4 D4

5 D3

6 D2

7 D1

R/W ACK

D0 NACK

S Start

A7

A6

A5

A4 Adresse

A3

A2

A1

D7

D6

D5

D4

D3

D2

D1

D0

NA

Read Ack

Donnes

NotAck stoP

Cours MicroContr oleur - Protocoles rs232 et I2C - 17 - UPMC/LMD/LI326

I2C Ig trame de base : restart Ig

START : Le maitre active SDA avant SCL DATA : lmetteur change SDA pandant ltat bas de SCL SDA est stable pandant ltat haut de SCL R/W : sens de lchange /W (0) le maitre est lmetteur

STOP : le maitre lache SCL avant SDA

ACK/NACK : lmetteur lache SDA le rcepteur active pour signifier ACK

SCL maitre SCL esclave SDA maitre SDA esclave

A7

A6

A5

A4

A3

A2

A1

R/W ACK

D7

D6

D5

D4

D3

D2

D1

D0 ACK

A7

A6

A5

A4

SCL SDA

1 A7

2 A6

3 A5

4 A4

5 A3

6 A2

7 A1

1 D7

2 D6

3 D5

4 D4

5 D3

6 D2

7 D1

8 D0

9 ACK

1 A7

2 A6

3 A5

4 A4

R/W ACK

S Start

A7

A6

A5

A4 Adresse

A3

A2

A1

W Write

A Ack

D7

D6

D5

D4

D3

D2

D1

D0

A Ack

Sr reStaRt

A7

A6

A5

A4 Adresse

Donnes

Cours MicroContr oleur - Protocoles rs232 et I2C - 18 - UPMC/LMD/LI326

dun echange Ig points cles Ig I2C de base


Le ma tre :
M M M M M

Lesclave :
M M M M M

emet une condition de demarrage envoie une adresse sur 7 bits envoie la commande r/w et stoppe si NACK lit laccuse pour une ecriture, il boucle sur
G G

attend une condition de demarrage lit ladresse sur 7 bits lit la commande r/w emet ACK si concerne pour une ecriture, il boucle sur
G G

envoie les 8 bits de donnee

lit les 8 bits de donnee

et stoppe si NACK lit laccuse M lit les 8 bits de donnee

emet ACK ou NACK pour arreter ecrit les 8 bits de donnee

pour une lecture, il boucle sur


G G

pour une lecture, il boucle sur


G G

emet ACK, ou NACK pour stopper

et stoppe si NACK lit laccuse

emet une condition de stop

maitre et lesclave peuvent ralentir lechange en jouant sur SCL.


Cours MicroContr oleur - Protocoles rs232 et I2C - 19 - UPMC/LMD/LI326

I2C Ig Les deux signications de lACK Ig

` deux denitions: Lacknowledge a ` chaque fois quil a bien rec 1. Un esclave emet un ACK a u une donnee le maitre recepteur stoppe lechange en cas de NACK. ` chaque quil a bien rec 2. Un maitre emet un ACK a u une donnnee et quil en veut dautres ` le NACK lesclave emetteur devra lacher la ligne SDA apres

Cours MicroContr oleur - Protocoles rs232 et I2C - 20 - UPMC/LMD/LI326

I2C Ig Adresses des esclaves Ig


par le protocole Adresses reserv ees 0000000 0000001 0000010 0000011 00001-11111-11110xy General Call adresse reconnue par tous les esclaves aux composant CBUS (ancetre) ` reserv e aux autres systemes ` reserv e au futur reserv e aux composants haute vitesse (3.4Mbauds) reserv e au futur reserv e adressage 10 bits sextuble CNA 1024 x 8 bits eeprom les autres sont dispo www.

par les fournisseurs 112 Adresses reserv ees 0100xyz 1010xyz ...

Cours MicroContr oleur - Protocoles rs232 et I2C - 21 - UPMC/LMD/LI326

I2C Ig adressage 10 bits Ig


` 10 bits dadresse, il y a deux cas de gure : Passage a 1. Le maitre veut faire une ecriture
il envoie ladresse de 10 bits dans les deux premiers octets puis les donnees normalement.

2. Le Maitre veut faire une lecture


` puis il envoie a il envoie ladresse de 10 bits en indiquant quil sagit une ecriture lesclave qui setait reconnu repond.
adresse 10 bits
S 1 1 1 1 0 A9 A8 W A A7 A6 A5 A4 A3 A2 A1 A0 A D7 D6 D5 D4 D3 D2 D1 D0 A D7 D6 D5 D4 D3 D2 D1 D0 A P

nouveau le poids fort de ladresse en indiquant quil sagit dune lecture, seul

ordre dcriture indicateur dadresse 10 bits adresse 10 bits

donne mise par le maitre et aquite par lesclave Start Rept

les donnes suivantes

Not Acknowledge pour stopper lchange ordre de lecture


D4 D3 D2 D1 D0 NA P

0 A9 A8 W A A7 A6 A5 A4 A3 A2 A1 A0 A Sr 1

0 A9 A8 R A D7 D6 D5 D4 D3 D2 D1 D0 A D7 D6 D5

ordre dcriture indicateur dadresse 10 bits

adresse poids fort rpt

donne recue par le maitre et aquite par le maitre

les donnes suivantes

Cours MicroContr oleur - Protocoles rs232 et I2C - 22 - UPMC/LMD/LI326

I2C Ig Arbitrage Ig
Si deux maitres tentent de demarrer un echange simultanement : le premier qui dit 1 sur SDA a perdu.
M M

Quand un maitre adresse un esclave, il place ladresse de celui-ci sur SDA. Pour mettre un 0 sur SDA, il active le transistor de pull-down Pour mettre un 1 sur SDA, il utilise le pull-up de la ligne. Quand un maitre ecrit sur SDA, il verie en la relisant, Si SDA vaut 0 alors que le maitre na pas activer son pull-down alors cest quun autre maitre communique aussi ` 1 Le perdant doit se retirer aussit ot SCL a poids fort dabord, les adresses Comme les adresses sont donnees desclaves les plus petites sont prioritaires par rapport aux grandes

M M

M M

Cours MicroContr oleur - Protocoles rs232 et I2C - 23 - UPMC/LMD/LI326

I2C Ig Arbitrage Ig
START : Les maitres activent SDA en mme temps sils sont synchrones aucun ne sapperoit que le bus est pris DATA : Les trois premiers bits dadresses sont identiques aucun ne voit encore de problme

SCL maitre n1 SCL maitre n2 SDA maitre n1 SDA maitre n2

1 1 A7 A7

2 2 A6 A6

3 3 A5 A5

4 4 A4 A4

A3

A2

A1

R/W

Il y a une diffrence entre ce qui est mis par le maitre n2 et ce quil lit sur SDA En consquence :

SCL SDA

1 A7

2 A6

3 A5

4 A4

5 A3

6 A2

7 A1

8 R/W

le maitre n2 lache le bus

Le maitre prioritaire ne sapperoit de rien S Start A7 A6 A5 A4 Adresse A3 A2 A1 W Write

Cours MicroContr oleur - Protocoles rs232 et I2C - 24 - UPMC/LMD/LI326

I2C du pic16f877 Ig Caracteristiques Ig

Le pic16f877 dispose
G G

dun module USART pour le protocole RS232 et un protocole synchrone. dun module MSSP pour les protocoles I2C et SPI.

Le module I2C permet le 100Kb/s, 400kb/s et 1Mb/s (non standard) en mode maitre/esclave 7/10 bits. est automatique ainsi que la detection Lemission des donnees e par le logiciel dans des ISR. des collisions mais le protocole est ger

Cours MicroContr oleur - Protocoles rs232 et I2C - 25 - UPMC/LMD/LI326

I2C Ig TME Ig

On va essayer de faire plusieurs experiences avec lI2C


G

Communiquer avec un Convertisseur Numerique Analogique pour erateur faire un petit gen de signal BF. em etre ` et/ou Communiquer avec un tel Ultra Son et/ou Communiquer entre deux PIC

Dans tous les cas on essayera de voir les signaux sur un analyseur logique.

Cours MicroContr oleur - Protocoles rs232 et I2C - 26 - UPMC/LMD/LI326

FIN ctrl-Q pour sortir