Bus I2c - 2022

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 28

FST MARRAKECH

FI_ER&ME

MODULE
MICROCONTROLEUR&DSP

H.AYAD 1
2021/2022
BUS I2C
I2C = IIC = Inter Integrated
Circuit

Etablir des échanges d’informations entre circuits intégrés

H.AYAD 2
2021/2022
Par exemple, pour connecter une EEPROM
ou une RAM à un microcontrôleur.
Il faut relier entre eux les bits de données et
les bits d'adresses des différents composants,
et, en plus, il faut bien souvent ajouter une
logique de sélection.
L'utilisation d'un bus I²C permet de réduire la
complexité des circuits imprimés à réaliser.

H.AYAD 3
2021/2022
Pourquoi I2c
Communication entre deux PIC

Risque de court circuit ne jamais autoriser le PIC à envoyer


un niveau haut
===>
PIC1 et PIC2 hors bsf TRISB,1 ; RB1 en entrée, donc
non connectée -> Led éteinte
H.AYAD 4
service 2021/2022
Le bus I²C permet de faire communiquer entre
eux des composants électroniques très divers
grâce à seulement trois fils :

➢un signal de données (SDA : Signal DAta)


➢un signal d'horloge (SCL : Signal CLock )
➢ et un signal de référence électrique (masse).

H.AYAD 5
2021/2022
2 fils + masse

H.AYAD 6
2021/2022
Tous les composants sont câblés en parallèle

Tous les composants sont câblés en parallèle

H.AYAD 7
2021/2022
Les niveaux logiques hauts sont réalisés par
des résistances de pull-up

H.AYAD 8
2021/2022
Exemple de câblage :

Un microcontrôleur PIC
associé à une
EEPROM

Le module I2C permet le


100Kb/s, 400kb/s et
1Mb/s
H.AYAD 9
2021/2022
Exemple de Fonctionnement

Exemple : Le PIC veut


lire le contenu d’une
case dans la Mémoire

Mémoire

H.AYAD 10
2021/2022
Le PIC doit :
- prendre le contrôle du BUS,
- envoyer l’adresse de l’octet qu’il veut lire,
- analyser les réactions de la Mémoire
- récupérer l’octet envoyé par la Mémoire
- libérer le BUS

H.AYAD 11
2021/2022
L’ensemble constituera 1 TRAME,
comportant 2 OCTETS, soit 16 BITS
auxquels s’ajoutent divers signaux,
l ’ensemble circulant sur les 2 FILS

H.AYAD 12
2021/2022
Le protocole I²C

➢Avant de tenter de prendre le contrôle du bus, un circuit doit


vérifier que les lignes SDA et SCL sont au repos.
➢ Si c'est le cas, le circuit indique qu'il prend le contrôle du bus
en mettant la ligne SDA à 0.
➢A partir de ce moment là, les autres circuits savent que le bus
est occupé et ils ne devraient pas tenter d'en prendre contrôle.
➢ Le circuit qui vient de prendre le contrôle du bus en devient
le maître
➢C'est lui qui génère le signal d'horloge, quel que soit le sens
H.AYAD 13
du transfert. 2021/2022
BIT « 0 »

H.AYAD 14
2021/2022
BIT « 0 »
BIT « 1 »

H.AYAD 15
2021/2022
BIT « 0 »
BIT « 1 »

1 BIT =

1 NIVEAU de SDA + 1 impulsion de SCL

H.AYAD 16
2021/2022
REGLE:

SDA ne peut changer de niveau


que lorsque SCL est à l’état BAS

H.AYAD 17
2021/2022
Condition de départ : un front descendant sur SDA quand
SCL est à l’état haut.
Condition d’arrêt : un front montant sur SDA quand SCL
est à l’état haut.

Sauf
deux exceptions :
START et STOP

Remarque : les conditions de départ et d’arrêt


sont toujours généréesH.AYAD
par le maître du bus. 18
2021/2022
? ?
Chaque ESCLAVE est identifié par une ADRESSE

Le MAITRE indique l’ESCLAVE à qui il s’adresse

Seul l’ESCLAVE
H.AYADconcerné réagit.
2021/2022
19
Exemple de lecture d'une donnée
Adresse sur 8 bits

Le maître envoie le start-condition


Le maître envoie le premier octet d’adresse, avec le bit R/W à 1 (lecture)
L’esclave répond par « ACK »
L ‘esclave envoie son premier octet de donnée
Le maître répond par « ACK »
………
L’esclave envoie le xème octet de donnée
Le maître répond « NOACK » pour signaler la fin du transfert
Le maître envoie le stop-sequence (P).
H.AYAD 20
2021/2022
Exemple d’écriture de deux octets dans les cases
mémoires de l’esclave

- Le maître envoie le start-condition (S)


- Le maître envoie l’octet d’adresse, avec le bit R/W à 0 (écriture)
- L’esclave répond par « ACK »
- Le maître envoie le premier octet de donnée
- L’esclave répond par « ACK »
- …………
- Le maître envoie le dernier octet de donnée
- L’esclave répond par « ACK » ou par « NOACK »
- Le maître envoie le stop-condition (P)
H.AYAD 21
par exemple si sa mémoire est 2021/2022
pleine, ou si les octets reçus sont incorrects etc
Exemple d'esclaves :

❖Horloge temps réel (Real Time Clock)


DS1307
Adresse 7 bits (1 1 0 1 0 0 0)

❖Horloge temps réel (Real Time Clock)


PCF8583
Adresse 7 bits (1 0 1 0 0 0 A0)

H.AYAD 22
2021/2022
❖Convertisseur numérique analogique
(CNA) de résolution 8 bits
MAX517 / MAX 518
Adresse 7 bits (0 1 0 1 1 A1 A0)
❖Thermomètre numérique
A2, A1 et A0 correspond
DS1631 / DS1731 :
Adresse 7 bits (1 0 0 1 A2 A1 A0)
❖EEPROM série 64 kbits
24xx64
Adresse 7 bits (1 0 1 0 A2 A1 A0)

H.AYAD 23
2021/2022
Communication entre
PIC 16F877
et 8 EPROM de 8Ko
24C64 - 24C512

H.AYAD 24
2021/2022
H.AYAD 25
2021/2022
H.AYAD 26
2021/2022
24xx64 : EEPROM série 64 kbits

Adresse 7 bits (1 0 1 0 A2 A1 A0)


A2, A1 et A0 correspondent aux niveaux
logiques appliqués à ces 3 entrées
On peut donc connecter jusqu'à 8 boîtiers
24xx64 sur un bus I2C (soit 512 kbits)

H.AYAD 27
2021/2022
Deux esclaves ne doivent pas avoir la même adresse.
Un maître n'a pas d'adresse.

H.AYAD 28
2021/2022

Vous aimerez peut-être aussi