Chapitre 1 Communication Série - UART SPI I2C

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

Chapitre 1 COMMUNICATION SERIE

SYNCHRONE ET ASYNCHRONE
1-LIAISON SERIE ASYNCHRONE (NORME 232)
1.1- Généralités

Dans une liaison en série, les données sont envoyées bit par bit sur la voie de transmission. Toutefois,
étant donné que la plupart des processeurs traitent les informations de façon parallèle, il s'agit de
transformer des données arrivant de façon parallèle en données en série au niveau de l'émetteur, et
inversement au niveau du récepteur.

Ces opérations sont réalisées grâce à un contrôleur de communication (la plupart du temps une
puce UART, Universal Asynchronous Receiver Transmitter). Le contrôleur de communication
fonctionne de la façon suivante :

La transformation parallèle-série se fait grâce à un registre à décalage qui permet, grâce à


une horloge, de décaler l'ensemble des données présentes en parallèle (registre) d'une position à
droite puis d'émettre le bit poids de faible (LSB) le premier et le bit de poids fort le dernier.

La transformation série-parallèle se fait quasiment de la même façon grâce au registre à


décalage qui permet de décaler le registre d'une position à droite à chaque réception d'un bit, puis
d'émettre la totalité du registre en parallèle lorsque celui-ci est plein et ainsi de suite :

Exemple d’une trame logique d’une liaison série asynchrone :


On souhaite transmettre la donnée « 0x45=%1000101 » avec les conditions suivantes :
- Donnée sur 7 bits

1
- Parité paire
- 2 bits de stop
Remarques : Le poids faible de la donnée est transmis en premier.
Le caractère transmis nécessite 11bits. Avant l’envoi de caractère suivant, le système doit attendre un
temps tm de l’ordre de 3, 4,5 Tb avec Tb : durée d’un bit.

Bit de parité

stop

Séquence de transmission sur la ligne de données


Le récepteur détecte la trame grâce au premier front descendant apparaissant après un état de repos de
la ligne. Ce front correspond au début du bit de START. La lecture des bits qui constituent la trame est
réalisée à un intervalle de temps régulier définis en fonction de la vitesse de transmission choisie.
L'émetteur et le récepteur doivent donc être configurés avec la même vitesse de transmission. On fixe
cette valeur en fonction des performances requises à des valeurs généralement conformes aux
transmissions standards : 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 Bauds.
Cependant, d'autres vitesses de transmission sont possibles en fonction des UART utilisés. Le nombre
de bits sur une trame asynchrone est généralement limité à 11 :
1 bit de start + 8 bits de données + 1 bit de parité + 1 bit de stop
1 bit de start + 7 bits de données + 1 bit de parité + 2 bits de stop
Exemple

• Débit= 9600bits/s => Tb=104us


• La durée d’un caractère est Tc=11.Tb=0.63ms
• Avec tm=4.Tb ==> la durée d’un caractère est TC=13.Tb=1.56ms

2
1.2-Format d’une trame électrique (norme RS232) d’une liaison série asynchrone
Les niveaux de tension appliqués sur la ligne de transmission sont imposés par des circuits « pilote de
ligne » et lus au niveau du récepteur par des circuits « récepteurs de ligne ». Le circuit le plus
couramment utilisé est :
Le MAX232 qui combine à la fois 2 émetteurs de lignes et 2 récepteurs de ligne, La norme RS232
prévoit la conversion logique électrique suivante :

Trame logique

Trame Electrique

Ci-dessus la correspondance entre la trame logique et la trame électrique pour la même transmission
que précédemment (envoi de 0x45).
La liaison série asynchrone est un moyen de communication entre deux systèmes électroniques facile à
mettre en œuvre. Ainsi, la plupart des microcontrôleurs modernes disposent d'un circuit spécialisé
(UART) leur permettant d'échanger des données avec l'extérieur de cette manière.
Sur cette liaison, une tension de 0v correspond à un 0 logique. Une tension de +Vcc (+3,3 V ou +5 V
selon la tension nominale du circuit) correspond à un 1 logique.
A titre de rappel, en RS-232, un 1 logique correspond à une tension entre -3 V et -25 V et un 0 logique
à une tension entre +3 V et +25 V. Par conséquent, si vous souhaitez connecter une sortie série
utilisant les niveaux TTL à votre ordinateur, il vous faudra un adaptateur spécialisé. Soit série TTL
vers RS-232.
1.3-Schéma de câblage entre deux microcontrôleurs
Communication directe entre deux MCU

Chip to chip Direct UART link

3
Communication série avec la norme RS232

RTS : Request to send output Up to 5m cable RS-232 link


CTS : Clear to Send input

Structure interne de l’interface série UART

• 110 baud
• 220 baud
• 300 baud
• 1 200 baud
• 2 400 baud
• 4 800 baud
• 9 600 baud
• 19 200 baud
• 38 400 baud
• 57 600 baud
• 115 200 baud
• 230 400 baud (selon la fréquence
d'oscillation employée)
• 460 800 baud
• 921 600 baud (« environ 1
L’UART est responsable de l'envoi et de la réception d'une séquence de bits. »)
mégabaud A la sortie d'un UART,
ces bits sont généralement représentés par des tensions de niveau• logique.
1 843 200Ces bits peuvent devenir
baud
• 3 686RS-232
RS-232, RS-422, RS-485, ou peut-être des spécifications propriétaires. 400 baudspécifie les niveaux de
tension . Un microcontrôleur UART ne peut pas générer de tels niveaux de tension par lui-même. Cela
se fait à l'aide d'un composant supplémentaire: le pilote de ligne RS-232. Le MAX232 est un exemple
classique de pilote de ligne RS-232. D’après la fiche technique, on peut remarquer que ce circuit
intégré a une pompe de charge qui génère ± 10V à partir de + 5V.

L'UART permet de convertir les données parallèles des lignes de bus PC en données série pour la
transmission via des pilotes de ligne vers des périphériques RS-232, RS-422 et RS-485 . Les trois
interfaces série RS-232, RS-422 et RS-485 offrent différentes possibilités pour des communications
série robustes sur de courtes et longues distances. Les UART constituent la base des trois normes et
facilitent l'ajout de communications série à des conceptions, notamment celles destinées à des
environnements industriels difficiles.

4
2-LIAISON SERIE ASYNCHRONE (NORME RS485)

2.1- Définition
Elle précise les caractéristiques des émetteurs et des récepteurs pour une utilisation dans les systèmes
multipoints en mode symétrique. La transmission se fait sur une ligne électrique paire torsadée en
mode différentiel (immunité aux bruits).
RS-485 : c'est une liaison série, de type asynchrone, différentielle qui permet un débit élevé (jusqu'à
10 Mb/s) sur une distance importante (jusqu'à 1200m). Elle dispose de 2 bornes d'émission polarisées
notées Tx(+), Tx(-) ou et de 2 bornes de réception polarisées notées Rx(+), Rx(-)
Les médias de type RS485 sont souvent en half duplex c’est-à-dire la transmission s’effectue via 2 fils.
La longueur peut aller jusqu'à 1200 mètres et peut transférer des données jusqu'à 10 Mbps (10
mégabits par secondes) mais pas les deux à la fois. Sur 1200 mètres, on peut transférer 90 kbps. Sur
100 mètres, on peut arriver à 1 Mbps. Pour atteindre 10 Mbps, la longueur ne doit pas dépasser 15
mètres. Si on souhaite créer une ligne plus longue, il faut utiliser des répéteurs qui régénèrent le signal
et débutent une nouvelle ligne.

Débit

Même si le standard RS485 ne dit rien sur les protocoles, la plupart des liaisons RS485 utilisent un
protocole asynchrone (existant sur les UARTs dans les PC). Un mot transmis est constitué d'un bit de
start, des données, d'un éventuel bit de parité et d'un bit de stop. Pour les microcontrôleurs,
n'importe quel port série peut se relier sur une interface RS485.

2.2-Topologie RS 485

5
RS485 en HALF DUPLEX

RS485 en FULL DUPLEX

6
2.3-Niveaux de tension en mode différentiel

Le mode différentiel permet d’annuler les tensions parasites produites.

7
Tableau comparatif entre les liaisons série asynchrones (RS232 et RS485/RS422)

Comparaison des caractéristiques des normes RS 232, RS 422 et RS 485

4-LIAISON SERIE SYNCHRONE

4.1-Liaison série SSI (synchronous serial interface)


C’est une interface série synchrone très courante utilisant une connexion point à point entre le système
de traitement (API : maître) et le capteur (Esclave). Elle est basée sur la norme RS485. Les données
d’horloge et de position sont transmises en mode différentiel suivant le protocole RS485 entre le
système de traitement et le capteur.

Exemple : Mesure de position par le capteur BALLOUF LBT7


La transmission des données série synchrone convient pour les automates de différents constructeurs,
(Siemens, Bosch-Rexroth, WAGO, B & R, Esitron, PEPn, etc..) ainsi que pour les appareils
d'affichage et de commande Balluff. Le driver et le récepteur différentiels RS485/422 garantissent la
transmission sûre des signaux, même pour des longueurs de câble de 400 m entre l'unité d'exploitation
et le capteur de déplacement. Les perturbations sont atténuées efficacement.

Schéma de câblage entre Capteur de déplacement et système de traitement API

8
Synchronisation et transmission SSI

Les mots-clés suivants seront utiles pour comprendre la procédure de transmission des données SSI.
• « tm» représente le délai de transfert. C'est le temps minimum requis par l'esclave pour se
rendre compte que la transmission des données est terminée.
Après tm, la ligne de données passe au repos et l'esclave commence à mettre à jour ses données
dans le registre à décalage.
• «tp» représente le temps de pause. Il s'agit du délai entre deux séquences d'horloge
consécutives du maître.
• «tw» représente le temps de répétition. C'est le temps minimum écoulé entre les
retransmissions des mêmes données et est toujours inférieur à tm.
• «T» représente la largeur de chaque cycle d'horloge. C'est le temps écoulé entre deux fronts
descendants ou montants dans une séquence d'horloge continue.
• MSB: bit le plus significatif
• LSB: bit le moins significatif Interface série synchrone.

Système à une séquence

9
10
Système à deux séquences

5-LIAISON SERIE SYNCHRONE I2C (Inter Integrated Circuit)


5.1 : Généralités sur la liaison série I2C
I2C est un bus série synchrone bidirectionnel half-duplex, où plusieurs équipements, maîtres ou
sclaves, peuvent être connectés au bus.
Les échanges ont toujours lieu entre un seul maître et un (ou tous les) esclave(s), toujours à l'initiative
du maître (jamais de maître à maître ou d'esclave à esclave). Cependant, rien n'empêche un composant
de passer du statut de maître à esclave et réciproquement.
La connexion est réalisée par l'intermédiaire de deux lignes :
• SDA (Serial Data Line) : ligne de données bidirectionnelle,
• SCL (Serial Clock Line) : ligne d'horloge de synchronisation bidirectionnelle.
• Signal de référence électrique : masse
Le nombre maximum d'équipements est limité par le nombre d'adresses disponibles, 7 bits d'adressage
et un bit R/W (lecture ou écriture), soit 128 périphériques, mais il dépend également de
la capacité (CB) du bus (dont dépend la vitesse maximale du bus). Il faut savoir que des adresses sont
réservées pour diffuser des messages en broadcast et que de nombreuses adresses sont déjà attribuées
par les fabricants ce qui limite grandement le nombre d'équipements (une variante d'adressage sur
10 bits existe également).
Il ne faut également pas oublier la masse qui doit être commune aux équipements.
Les 2 lignes sont tirées au niveau de tension VDD à travers des résistances de pull-up (RP).
Il ne doit y avoir qu’un seul maître qui contrôle les autres composants auxquels il est connecté. La
figure ci-dessous montre un maître I2C avec plusieurs esclaves I2C.

11
Le bus I2C permet d’échanger des informations sous forme série avec un débit pouvant atteindre 100
kilobits/s ou 400 kilobits/s pour les versions les plus récentes. Ses points forts sont les suivants :

• C’est un bus série bifilaire utilisant une ligne de donnée SDA et une ligne d’horloge SCL ;
• Le bus est multi maîtres ;
• Chaque abonné dispose d’une adresse codée sur 7 bits, on peut donc connecter simultanément
128 abonnés d’adresses différentes sur le même bus (sous réserve de ne pas le surcharger
électriquement =la charge) ;
• Un acquittement est généré pour chaque octet de donnée transféré ;
• Le nombre maximal d’abonné n’est limité que par la charge capacitive maximale du bus qui
peut être de 400 pF ;
• Les niveaux électriques permettent l’utilisation des circuits en technologies CMOS, NMOS ou
TTL.
5.2-PRISE DE CONTROLE DE BUS

• Le bus doit être au repos avant la prise de contrôle des signaux. [SDA=1 et SCL=1]
• Pour transmettre des données, il faut surveiller :
➢ La condition de départ SDA passe à 0 et SCL reste à 1
➢ La condition d’arrêt SDA passe à 1 et SCL reste à 1
• Après avoir vérifié que le bus est libre, puis pris le contrôle de celui-ci, le circuit en devient le
maître : c’est lui qui génère le signal d’horloge
5.3-CONDITIONS DE DEPART ET D’ARRET

Remarque :

12
Lorsqu’un maître désire effectuer plusieurs échanges à destination d’esclaves d’adresses différentes, il
n’est pas obligé de terminer le premier échange par une condition d’arrêt mais peut les enchaîner en
générant une condition de départ dès la fin d’un échange.

Exemple :

5.4-Transmission d'un octet

Avant de placer les bits qui forment l'octet à transmettre sur le bus, le maître doit placer la ligne
d'horloge SCL à 0. Tant que la ligne SCL est au niveau haut, la ligne SDA ne doit pas changer d'état,
sinon cette condition sera interprétée comme la condition d'arrêt. La condition arrêt peut survenir
même au milieu de la transmission d'un octet, pour abandonner la transmission et libérer le bus pour
les autres circuits. Pour transmettre correctement les bits sur la ligne SDA, le maître doit donc tout
d'abord placer la ligne SCL à 0. Ensuite, le maître peut placer la ligne SDA au niveau correspondant au
bit à transmettre et replacer la ligne SCL au niveau 1 pour indiquer que le bit est présent sur la ligne
SDA. La même opération va se répéter autant de fois que nécessaire pour transmettre les 8 bits de
données. Notez que c'est le bit de poids fort qui est transmis en premier.

Une fois les 8 bits transmis, le circuit qui vient de recevoir les données doit imposer un bit
d'acquittement ACK sur la ligne SDA. Pour cela, pendant que la ligne SCL est au niveau bas, le maître
place sa propre sortie au niveau haut, tandis que le récepteur (aussi appelé l'esclave) place sa sortie au
niveau bas. Puisque les sorties sont à collecteur ouvert, la ligne SDA restera au niveau bas à cause de
13
l'esclave. Le maître relit ensuite la ligne SDA une fois qu'il a passé la ligne SCL au niveau haut. Si la
valeur lue pour le bit ACK est 0, c'est que l'esclave s'est bien acquitté de l'octet reçu, sinon c'est qu'il y
a une erreur et le maître doit générer la condition arrêt.

SCL Etape de transmission d’un octet

• Le maître transmet le bit de poids forts D7


sur SDA
• Il valide la donnée en appliquant un niveau
‘1’ sur SCL
• Lorsque SCL retombe à ‘0’, il poursuit avec
D6, etc., jusqu’à ce que l’octet complet soit
transmis
• Il envoie le bit ACK à ‘1’ en scrutant l’état
réel de SDA
• L’esclave doit imposer un niveau ‘0’ pour
signaler que la transmission s’est déroulée
correctement
• Le maître voit le ‘0’ (collecteur ouvert) et
peut passer à la suite

5.5-Transmission de l’adresse de l’esclave


• Nombre de composant : nécessite de définir pour chacun une adresse unique
• Adresse codée sur 7bits
• Adresse transmise sous la forme d’un octet au format particulier
o D7…..D1 : 7bits d’adresses A6…A0
o D0 : bit R/W qui détermine si le maître veut lire ou écrire

Cas particulier : Les mémoires


Lorsque l’espace mémoire adressable est plus grande que les autres circuits :
Adresse pour codée sur 2 octets ou plus
▪ Premier octet : adresse du circuit
▪ Octets suivants : adresse interne de la mémoire
Adresses réservées :
▪ 00000xxx et 11111xxx réservées à des modes de fonctionnement particuliers

Remarque :
Le 8èmebit d’adresse spécifie le mode d’accès : R/W
Le nombre maximal de circuits est de 128

14
Les adresses paires sont des adresses de d’écriture alors que les adresses impaires sont des adresses de
lecture.
5.6-Ecriture d’une donnée
1-Envoi de l’adresse de destination Remarque : Il faut attendre le signal ACK avant de
poursuivre l’écriture dans la mémoire
2-Sélection du mode écriture (R/W=0
3-Envoi de la donnée

5.7-Lecture d’une donnée


1-Le maître envoie l’adresse puis attend l’ACK
2-L’ACK est positionné par l’esclave, puis celui-ci émet les données sur SDA
3-Ensuite, le maître positionne ACK à ‘0’ pour continuer la lecture ou ‘1’ pour stopper la transmission

15
5.8-Gestion de conflits
Le bus I2C est de conception destiné à accueillir plusieurs maîtres => problème commun à tous les
réseaux utilisant un canal de transmission unique : Comment arbitrer ?
En effet, chaque maître peut prendre possession du bus dès que celui-ci est libre : possibilité que deux
maîtres prennent la parole en même temps.
Pas de problème électrique => collecteur ouvert
Problème logique => Eviter la corruption des données due à la collision des bits transmis.
Principe :
Prise de contrôle du bus
▪ Vérifier que le bus est libre
▪ Condition d’arrêt envoyée depuis au moins 4.7us
▪ Prise de contrôle effectif, mais vérification de l’état des lignes SDA et SCL, plusieurs cas
sont possibles :
➢ Différents maîtres envoient en même temps => aucun conflit cas rare
➢ Un maitre impose un 0 : il relie obligatoirement un 0 et continuera à transmettre
ses données
➢ Un maitre cherche à appliquer un 1 sur le bus :
▪ S’il relit un 1, il continu à transmettre les données
▪ S’il relit un 0 => un autre maitre à pris le contrôle de bus : il perd alors
l’arbitrage => arrête d’émettre et continue à lire les données
Exemple.1

Exemple.2

16
Qu’il est le maître qui a pris le contrôle du bus ?
Remarque :
Pour certains circuit l’adresse codée sur 7 bits est divisée en deux partie, une partie fixe
physique(A2A1A0) te une partie logique.

Lorsque l’adressage de la mémoire nécessite plus de 7 bits d’adresse, on distingue les 8 bits de la partie basse
de l’adresse (Ad7 à AD0) et la partie haute comprenant 3 bits (Ad8 à Ad10). Le protocole I2C fait appel à un
code spécifique (1010) lorsqu’il s’agit de communiquer avec une mémoire compatible I2C.

Principe d’écriture dans une mémoire avec adressage effectué sur 2 octets : Le maître pointe l’adresse de la
mémoire (2 octets) en mode écriture, puis écrit la donnée (1 octet).

17
6-COMMUNICATION SERIE SPI

6.1-Généralités sur le bus SPI

La liaison SPI (Serial Périphérique Interface) est un bus série utilisé pour la transmission synchrone de
données entre un maître et un ou plusieurs esclaves (multipoints). La transmission a lieu en full duplex.
Le maître génère l’horloge et initialise la transmission de données en sélectionnant l’esclave
(convertisseur, registre à décalage, mémoire, …) avec qui il veut communiquer.
Chaque esclave est sélectionné par une ligne ‘SS’ (Slave Select) et n’est actif que lorsqu’il est
sélectionné.
Le bus SPI est composé de deux lignes de données et deux lignes de signal, toutes unidirectionnelles
MOSI (Master Out Slave In) : Sur la ligne MOSI le maître transmet des données à l’esclave.
MISO (Master In Slave Out) : Sur la ligne MISO l’esclave transmet des données au maître.
SCK (SPI Serial ClocK) : Signal d’horloge, généré par le maitre, qui synchronise la transmission.
La fréquence de ce signal est fixée par le maître et est programmable.
SS (Slave Select) : Ce signal placé au niveau logique ‘0’ permet de sélectionner (adresser)
individuellement un esclave. Il y a autant de lignes SS que d’esclaves sur le bus. Le nombre possible
de raccordements SS du maître limitera donc le nombre d’esclaves.

18
A chaque front d’horloge, le maître envoie un bit sur la ligne MOSI. De même il peut recevoir à
chaque front d’horloge, sur la ligne MISO, un bit transmis par l’esclave.
La transmission commence par le MSB.
La transmission de données est terminée dès que la ligne SS est remise au niveau logique ‘1’.

6.2- Modes de fonctionnement


Il existe donc 4 modes de transmission différents (voir tableau ci-dessous). Pour une transmission
correcte il faut que ces paramètres soient réglés de la même manière pour tous les composants reliés au
bus.

19
Un transfert SPI s’effectue de la manière suivante :
• Le maître active la ligne SS de l’esclave avec lequel il veut parler.
• Le maître génère le signal d’horloge pour 8 bits
➢ Pendant une montée ou une descente, le maître et l’esclave mettent une donnée sur MOSI
et MISO respectivement.
➢ Pendant la descente ou la montée qui suit, le maître et l’esclave lisent la donnée sur MISO
et MOSI respectivement.
• Le maître désactive la ligne SS de l’esclave avec lequel il veut parler
Remarque :
Si on veut on recevoir des données en mode maître, il faut transmettre des données pour activer
l’horloge, même si ce que l’on transmet n’a pas de sens.
La vitesse typique d’un lien SPI est 10 Megabits par seconde (10Mbps). Certains périphériques SPI
sont plus rapides que 10Mbps, mais 10Mbps est une vitesse maximum fréquente.

20
6.3-Avantages et inconvénients de bus SPI

21

Vous aimerez peut-être aussi