Академический Документы
Профессиональный Документы
Культура Документы
Module Programmation des MicroContr oleurs Industriels Licence/Ma trise informatique de Paris 6 Mars 2006
Plan Ig du cours Ig
M M M M
Les differents bus series Le bus rs232 Le bus I2C Les modules du pic16f877
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.
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
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.
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
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
TX RX GND
` 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 de rception
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
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.
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
Rp
SCL out
0 ouvert 1 ferm
SCL in
0 ouvert 1 ferm
SDA out
0 ouvert 1 ferm
SDA in
0 ouvert 1 ferm
abonn n1
abonn n2
SDA
SDA
SDA
SDA stable
SDA stable
STOP
SDA change
SCL
SCL
SDA
SDA
START
STOP
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
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
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
ACK/NACK : lmetteur lache SDA le maitre place NACK pour la dernire donne
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
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
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
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
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
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
` 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
par les fournisseurs 112 Adresses reserv ees 0100xyz 1010xyz ...
nouveau le poids fort de ladresse en indiquant quil sagit dune lecture, seul
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
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
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
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 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
I2C Ig TME Ig
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.