Académique Documents
Professionnel Documents
Culture Documents
http://robert.cireddu.free.fr/SIN
http://robert.cireddu.free.fr/SIN
Objectifs du COURS :
Ce cours traitera essentiellement les points suivants :
- le bus I2C
- protocole
- en-tte
- exemples avec le circuit Dallas DS1307 (RTC)
- complments
INTRODUCTION
Les normes I2C (Inter-Integrated Circuit) et SPI (Serial Peripheral Interface) ont t cres pour
fournir un moyen simple de transfrer des informations numriques entre des capteurs et des
microcontrleurs.
Les bibliothques Arduino pour I2C et SPI facilitent lutilisation de ces deux protocoles.
Le choix entre I2C et SPI est en gnral dtermin par les priphriques que lon souhaite
connecter. Certains appareils offrent les deux standards, mais habituellement un priphrique ou
une puce ne supporte quune seule des deux normes.
I2C lavantage de navoir besoin que de deux connexions de signalisation (lemploi de plusieurs
priphriques sur les deux connexions est assez simple et on reoit une confirmation que les
signaux ont t correctement reus).
Linconvnient est que la vitesse des donnes est infrieure celle de SPI et quelles ne
peuvent voyager que dans un seul sens la fois (Simplex), ce qui abaisse encore plus le dbit si
des communications bidirectionnelles sont ncessaires (Half Duplex). Il faut aussi connecter des
rsistances pull-up aux connexions pour sassurer de la fiabilit de la transmission des
signaux.
Lavantage de SPI est quil a un meilleur dbit et quil a des connexions dentre et de sorties
spares, si bien quil peut envoyer et recevoir en mme temps (Full Duplex). Il utilise une ligne
supplmentaire par appareil pour slectionner le priphrique actif et il faut donc plus de
connexions si on a de nombreux appareils connecter.
Fichier : Bus I2C
LE BUS I2C
Les deux connexions du bus I2C se nomment SCL (Serial Clock Line) et SDA (Serial Data line).
Elles sont disponibles sur une carte standard Arduino en employant la broche analogique 5 pour
SCL qui fournit un signal dhorloge, et la broche analogique 4 pour SDA, qui soccupe du transfert
des donnes (sur la Mega, il faut utiliser la broche 20 pour SDA et la broche 21 pour SCL). La
carte Uno rev 3 a des broches supplmentaires qui dupliquent les broches 4 et 5.
Pour le Raspberry Pi type B, il sagit respectivement des broches GPIO2 et GPIO3 pour SDA et
SCL repres sur le Pi Cobbler .
Un priphrique sur le bus I2C est considr comme le priphrique matre. Son travail consiste
coordonner le transfert des informations entre les autres priphriques (esclaves) qui sont
connects.
Il ne doit y avoir quun seul matre qui contrle les autres composants auxquels il est connect. La
figure ci-dessous montre un matre I2C avec plusieurs esclaves I2C.
R R
IHM
(LCD Display)
Les priphriques I2C ont besoin dune masse commune pour communiquer.
Les priphriques esclaves sont identifis par leur numro dadresse. Chaque esclave doit avoir
une adresse unique. Certains appareils I2C ont une adresse fixe alors que dautres permettent
que lon configure leur adresse en dfinissant les broches HIGH ou LOW ou en envoyant des
commandes dinitialisation.
Remarques :
LArduino utilise des valeurs sur 7 bits pour spcifier les adresses I2C. Certaines notices
techniques de priphriques emploient des adresses sur 8 bits, dans ce cas il faut diviser par deux
pour obtenir la valeur correcte sur 7 bits.
La bibliothque Arduino Wire masque toutes les fonctionnalits de bas niveau du I2C et permet
lemploi de commandes simples pour initialiser les appareils et communiquer avec eux.
Fichier : Bus I2C
Le bus I2C permet dchanger des informations sous forme srie avec un dbit pouvant atteindre
100 kilobits/s ou 400 kilobits/s pour les versions les plus rcentes.
Ses points forts sont les suivants :
- cest un bus srie bifilaire utilisant une ligne de donne SDA et une ligne dhorloge SCL ;
- le bus est multi matres ;
- chaque abonn dispose dune adresse code sur 7 bits, on peut donc connecter simultanment
128 abonns dadresses diffrentes sur le mme bus (sous rserve de ne pas le surcharger
lectriquement = la charge) ;
- un acquittement est gnr pour chaque octet de donne transfr ;
- un procd permet de ralentir lquipement le plus rapide pour sadapter la vitesse de
lquipement le plus lent lors dun transfert ;
- le nombre maximal dabonn nest limit que par la charge capacitive maximale du bus qui peut
tre de 400 pF ;
- les niveaux lectriques permettent lutilisation des circuits en technologies CMOS, NMOS ou
TTL.
PROTOCOLE
La figure ci-dessous montre le principe adopt au niveau des tages dentres/sorties des circuits
dinterfaces du bus I2C.
+VDD
SDA
SCL
OUT1 OUT2
Horloge Horloge
IN1 IN2
OUT1 OUT2
Donnes Donnes
IN1 IN2
La partie entre nappelle aucune remarque particulire, en revanche la partie sortie fait appel
une configuration drain ouvert (lquivalent en MOS du classique collecteur ouvert) et qui
permet de raliser des ET cbls par simple connexion sur la ligne SDA ou SCL, des sorties de
tous les circuits.
Aucune charge ntant prvue dans ces derniers, une rsistance de rappel (pull-up) une tension
positive doit tre mise en place.
tant entendu que nous travaillons en logique positive, cest--dire quun niveau haut correspond
une tension plus leve quun niveau bas.
Fichier : Bus I2C
Lorsque aucun abonn nmet sur le bus, les lignes SDA et SCL sont au niveau haut qui est leur
tat de repos.
Quand une ligne (SDA ou SCL) est au repos (niveau 1), on peut la forcer 0.
Quand une ligne (SDA ou SCL) est au niveau 0, on ne peut pas la forcer 1.
Dans lexemple ci-dessus, l'horloge SCL est au niveau 0 car c'est le PIC 16F876A (matre) qui
force cette ligne 0.
Remarque :
Le DS1307 (module RTC : Real Time Clock) fonctionne toujours en esclave : ce n'est donc jamais
lui qui agit sur l'tat de l'horloge (SCL).
SCL
Les donnes Les donnes
doivent tre doivent tre
stables stables
Une condition de dpart est ralise lorsque la ligne SDA passe du niveau haut au niveau bas
alors que SCL est au niveau haut. Rciproquement, une condition darrt est ralise lorsque SDA
passe du niveau bas au niveau haut alors que SCL est au niveau haut.
Les donnes sont envoyes par paquets de huit bits (ou octets). Le bit de poids fort est envoy le
premier, chaque octet est suivi par un bit dacquittement (ACK) de la part du destinataire.
EN-TTE
La figure page suivante montre le contenu du premier octet qui est toujours prsent en dbut
dchange. Ses sept bits de poids forts contiennent ladresse du destinataire, ce qui autorise 128
combinaisons diffrentes. Le bit de poids faible indique si le matre va raliser une lecture ou une
criture. Si ce bit est zro, le matre va crire dans lesclave ou lui envoyer des donnes. Si ce
bit est un, le matre va recevoir des donnes de lesclave.
Fichier : Bus I2C
Le circuit Dallas DS1307 est une horloge temps rel (Real Time Clock), qui fournit secondes,
minutes, heures, jours, dates, mois et annes.
Les annes bissextiles sont prises en compte (jusqu'en 2100).
Le DS1307 travaille dans le mode standard (frquence d'horloge de 100 kHz).
L'adresse I2C (7 bits) du DS1307 est : 1101000 (adresse fixe par le constructeur et non
modifiable).
Question :
Chronogramme correspondant :
Fichier : Bus I2C
Question :
Le contenu du registre d'adresse 0x00 du DS1307 est 00000110 (codage BCD : 06 secondes).
Le contenu du registre d'adresse 0x01 est 0x56 (c'est--dire 56 minutes).
Le contenu du registre d'adresse 0x02 est 0x09 (c'est--dire 09 heures).
Le contenu du registre d'adresse 0x03 est 0x03 (c'est--dire Mardi).
COMPLMENTS